当前位置: 首页 > news >正文

【C++】string 类 ( 上)

标准库中的string类

注意:

1. string是表示字符串的字符串类

2. 该类的接口与常规容器的接口基本相同,再添加了一些专门用来操作string的常规操作。 比特就业课

3. string在底层实际是:basic_string模板类的别名,typedef basic_string string;

4. 不能操作多字节或者变长字符的序列。 在使用string类时,必须包含#include头文件(#include<string>)以及using namespace std;

a. string类对象的常见构造

代码举例1

#include <iostream>
#include<string>
using namespace std;
int main()
{string t1; // 相当于类对象的实例化
}

代码举例2

#include <iostream>
#include<string>
using namespace std;
int main()
{string t1("hello world"); // 调用构造函数cout << t1 << endl;string t2 = "hello world"; //隐式类型转换(构造函数 + 拷贝构造 + 优化 -> 构造函数)cout << t2 << endl;
}

代码举例3

#include <iostream>
#include<string>
using namespace std;
int main()
{string t1(10, 'a');  // 拷贝 10 个 acout <<  t1 << endl;
}

运行结果:

代码举例4

#include <iostream>
#include<string>
using namespace std;
int main()
{string t1("hello");string t2(t1); // 拷贝构造cout << t2 << endl;
}

b. string类对象的容量操作

  • size (返回字符串有效字符长度,没有 '\0 ')

代码举例1

#include <iostream>
#include<string>
using namespace std;
int main()
{string t1 = "hello";cout << t1.size() << endl;
}

运行结果:

  • capacity (返回字符串的总空间大小)

代码举例2

#include <iostream>
#include<string>
using namespace std;
int main()
{string t1 = "hello";cout << t1.capacity() << endl;
}

运行结果:

分析:

string 类里面的成员变量有两个可以存储空间,一个是数组,另一个是动态开辟的空间,当数组空间不足时,才会用动态开辟

  • reserve(扩大字符串容量,字符有效长度不变:即 size 不变)

代码举例3

#include <iostream>
using namespace std;
int main()
{string t1 = "hello";cout << "有效长度:" << t1.size() << " 总容量:" << t1.capacity() << endl;t1.reserve(100);cout << "有效长度:" << t1.size() << " 总容量:" << t1.capacity() << endl;
}

运行结果:

分析:

有些编译器在分配空间的时候,可能会对于开辟所需的空间再给大一点

  • resize (将有效字符的个数该成n个,多出的空间用字符c填充)

代码举例4

#include <iostream>
using namespace std;
int main()
{string t1 = "hello";cout << "有效长度:" << t1.size() << " 总容量:" << t1.capacity() << endl;t1.resize(100);cout << "有效长度:" << t1.size() << " 总容量:" << t1.capacity() << endl;t1.resize(10); //可以缩小有效长度,但总容量不会随意变动cout << "有效长度:" << t1.size() << " 总容量:" << t1.capacity() << endl;t1.resize(20, '*'); //对于的空间可以初始化任意字符cout << t1 << endl;
}

运行结果:

c. string类对象的访问及遍历操作

  • operator[] (返回pos位置的字符,和 C 语言的用法一样,const string类对象调用)
  • begin + end (begin获取一个字符的迭代器 + end获取最后一个字符下一个位置的迭代器)

代码举例1

#include <iostream>
using namespace std;
int main()
{string t1 = "hello bit";string::iterator it = t1.begin();// it 相当于拿到 首元素的地址了while (it != t1.end()){cout << *it << endl;it++;}
}

运行结果:

分析:

  • rbegin + rend (rbegin获取最后一个字符的迭代器 + rend获取第一个字符前一个位置的迭代器)

代码举例2

#include <iostream>
using namespace std;
int main()
{string t1 = "hello bit";string::reverse_iterator rit = t1.rbegin();// it 相当于拿到 首元素的地址了while (rit != t1.rend()){cout << *rit << endl;rit++;}
}

运行结果:

分析:

  • 范围for

代码举例3

#include <iostream>
using namespace std;
int main()
{string t1 = "hello bit";for (auto i : t1){cout << i;}cout << endl;for (int i = 0; i < t1.size(); i++){cout << t1[i];}
}

运行结果:

相关文章:

【C++】string 类 ( 上)

标准库中的string类 注意&#xff1a; 1. string是表示字符串的字符串类 2. 该类的接口与常规容器的接口基本相同&#xff0c;再添加了一些专门用来操作string的常规操作。 比特就业课 3. string在底层实际是&#xff1a;basic_string模板类的别名&#xff0c;typedef basi…...

《中华人民共和国消防法》(2021年修订版)解读

单选题&#xff08;共7题&#xff0c;每题5分&#xff09; 1、举办大型群众性活动&#xff0c;承办人应当依法向&#xff08;&#xff09;申请安全许可。 正确答案&#xff1a;B、公安机关 2、违反消防安全规定进入生产、储存易燃易爆危险品场所的&#xff0c;情节严重的要处…...

vue+element模仿实现云码自动验证码识别平台官网

一、项目介绍 项目使用传统vue项目结构实现&#xff0c;前端采用element实现。 element官网&#xff1a;Element - The worlds most popular Vue UI framework 云码官网地址&#xff1a;云码-自动验证码识别平台_验证码识别API接口_免费验证码软件 项目截图&#xff0c;支持…...

蓝桥杯练习系统(算法训练)ALGO-992 士兵杀敌(二)

资源限制 内存限制&#xff1a;256.0MB C/C时间限制&#xff1a;1.0s Java时间限制&#xff1a;3.0s Python时间限制&#xff1a;5.0s 问题描述 南将军手下有N个士兵&#xff0c;分别编号1到N&#xff0c;这些士兵的杀敌数都是已知的。   小工是南将军手下的军师&…...

Pycharm下如何生成exe软件

第一步 下载pyinstaller pip install pyinstaller 对pyinstaller第二步 使用pyinstaller cmd切换到项目目录执行命令:pyinstaller --add-data “./templates;templates” 入口文件名.py...

KubeSphere平台安装系列之三【Linux多节点部署KubeSphere】(3/3)

**《KubeSphere平台安装系列》** 【Kubernetes上安装KubeSphere&#xff08;亲测–实操完整版&#xff09;】&#xff08;1/3&#xff09; 【Linux单节点部署KubeSphere】&#xff08;2/3&#xff09; 【Linux多节点部署KubeSphere】&#xff08;3/3&#xff09; **《KubeS…...

YOLOv9独家改进|动态蛇形卷积Dynamic Snake Convolution与空间和通道重建卷积SCConv与RepNCSPELAN4融合

专栏介绍&#xff1a;YOLOv9改进系列 | 包含深度学习最新创新&#xff0c;主力高效涨点&#xff01;&#xff01;&#xff01; 一、改进点介绍 Dynamic Snake Convolution是一种针对细长微弱的局部结构特征与复杂多变的全局形态特征设计的卷积模块。 SCConv是一种即插即用的空间…...

XSS初级漏洞靶场

一、环境的搭建 可以在githb上找靶机包&#xff0c;使用小皮面板搭建在自己本机 与此文章类似&#xff08;放在www目录下&#xff09; 二、XSS漏洞简介 1、什么是xss漏洞 当用户访问被xss注入的网页&#xff0c;xss代码就会被提取出来。用户浏览器就会解析这段xss代码&…...

k8s pv与pvc理解与实践

参考文章&#xff1a; https://blog.csdn.net/qq_41337034/article/details/117220475 一、 pv/pvc简述 Pv是指PersistentVolume&#xff0c;中文含义是持久化存储卷是对底层的共享存储的一种抽象&#xff0c;Pv由管理员进行配置和创建&#xff0c;只要包含存储能力&#xff…...

Unity游戏输入系统(新版+旧版)

使用新版还是旧版 旧版 using System.Collections; using System.Collections.Generic; using UnityEngine;public class c5 : MonoBehaviour {void Start(){}void Update(){// 注意要在游戏中 点鼠标键盘进行测试// 鼠标// 0左键 1右键 2滚轮if (Input.GetMouseButtonDown(0)…...

区块链媒体:链游媒体宣发渠道9个方法分享-华媒舍

在当今的游戏市场中&#xff0c;要想让自己开发的游戏脱颖而出&#xff0c;宣传策略的选择也至关重要。链游媒体是一种有效的宣发渠道&#xff0c;通过它们可以向广大玩家推广游戏并提高知名度。下面介绍9个链游媒体宣发渠道&#xff0c;帮助你的游戏走向成功。 1. 游戏公众号 …...

LeetCode--42

42. 接雨水 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图&#xff0c;计算按此排列的柱子&#xff0c;下雨之后能接多少雨水。 示例 1&#xff1a; 输入&#xff1a;height [0,1,0,2,1,0,1,3,2,1,2,1] 输出&#xff1a;6 解释&#xff1a;上面是由数组 [0,1,0,2,1,0,1,…...

【解决】虚幻导入FBX模型不是一个整体

问题&#xff1a; 现在有一个汽车的fbx模型&#xff0c;导入虚幻引擎&#xff0c;导入后变成了很多汽车零件模型。 解决&#xff1a; 把“合并网格体”勾选上&#xff0c;解决问题。...

第四十八回 解珍解宝双越狱 孙立孙新大劫牢-Python模块和包概念与使用

吴用对宋江说&#xff0c;有个人&#xff0c;他是石勇的关系&#xff0c;与祝家庄的峦廷玉关系好&#xff0c;还是杨林、邓飞的老相识&#xff0c;他有一计.... 原来在宋江攻打祝家庄的时间段&#xff0c;山东海边登州也发生了一件事。登州山下有一家猎户&#xff0c;弟兄两个…...

【Spring连载】使用Spring Data访问 MongoDB----对象映射之属性转换器

【Spring连载】使用Spring Data访问 MongoDB----对象映射之属性转换器 一、声明式值转换器二、编程式值转换器注册三、MongoCustomConversions配置 虽然基于类型的转换已经提供了影响目标存储中某些类型的转换和表示的方法&#xff0c;但当仅考虑特定类型的某些值或属性进行转换…...

【axiox】前后端接口通讯数据交互

重要全局配置&#xff1a; axios.create(); 设置axios请求的公共配置信息。 service.interceptors.request.use((config)>{}) 请求拦截器 service.interceptors.response.use((res)>{},(err)>{}) 响应拦截器 const source axios.CancelToken.source(); 用…...

《Linux C编程实战》笔记:共享内存

共享内存是分配一块能被其他进程访问的内存。每个共享内存段在内核中维护一个内部数据结构shmid_ds(和消息队列、信号量一样)&#xff0c;该结构定义在头文件linux/shm.h中,这是我从源码里抄的 #include<linux/shm.h> struct shmid_ds {struct ipc_perm shm_perm; /* 操…...

【GitHub】修改默认分支

GitHub的默认分支为main&#xff0c;但我们常常习惯使用master作为默认分支&#xff0c;那在GitHub上如何将master修改为默认分支呢&#xff1f; 全局修改 点击头像&#xff0c;选择菜单栏中的设置 输入master作为默认分支&#xff0c;然后执行updating即可&#xff01; 单项…...

常用Linux 命令汇总

1、基本命令 uname -m 显示机器的处理器架构 uname -r 显示正在使用的内核版本 dmidecode -q 显示硬件系统部件 (SMBIOS / DMI) hdparm -i /dev/hda 罗列一个磁盘的架构特性 hdparm -tT /dev/sda 在磁盘上执行测试性读取操作系统信息 arch 显示机器的处理器架构 uname -m 显示…...

13 双口 RAM IP 核

双口 RAM IP 核简介 双口 RAM IP 核有两个端口&#xff0c;它又分为伪双端口 RAM 和真双端口 RAM&#xff0c;伪双端口 RAM 一个端口只能读&#xff0c;另一个端口只能 写&#xff0c;真双端口 RAM 两个端口都可以进行读写操作。同时对存储器进行读写操作时就会用到双端口 RAM…...

Venera漫画应用:开源漫画聚合阅读器的完整实战指南

Venera漫画应用&#xff1a;开源漫画聚合阅读器的完整实战指南 【免费下载链接】venera A comic app 项目地址: https://gitcode.com/gh_mirrors/ve/venera 在数字漫画阅读的广阔世界里&#xff0c;你是否曾为寻找一款既能阅读本地漫画、又能聚合全网资源的应用而烦恼&a…...

马普所:生命蛋白质宇宙聚类

摘要 将生命之树中的数十亿蛋白质进行关联分析&#xff0c;仍是比较生物圈基因组学与人工智能驱动结构预测领域的核心难题。本文提出&#xff11;种级联式超快速聚类方法DIAMOND DeepClust&#xff0c;可实现行星尺度的蛋白质空间组织&#xff0c;支持万亿级序列分析&#xff…...

OBS StreamFX插件终极指南:5个步骤打造电影级直播画面

OBS StreamFX插件终极指南&#xff1a;5个步骤打造电影级直播画面 【免费下载链接】obs-StreamFX StreamFX is a plugin for OBS Studio which adds many new effects, filters, sources, transitions and encoders! Be it 3D Transform, Blur, complex Masking, or even custo…...

消费增值积分单边上扬软件源码开发

消费增值积分单边上扬系统开发要点消费增值积分单边上扬系统是一种通过消费行为累积积分&#xff0c;并确保积分价值稳定上升的商业模式。以下是开发此类系统的关键要点&#xff1a;系统架构设计 采用微服务架构分离核心模块&#xff0c;积分管理模块独立部署确保高可用性。数据…...

calicoctl安装

下载二进制文件 # curl -L https://github.com/projectcalico/calico/releases/download/v3.21.4/calicoctl-linux-amd64 -o calicoctl为calicoctl添加可执行权限 # chmod x calicoctl安装calicoctl # mv calicoctl /usr/bin/查看添加权限后文件 # ls /usr/bin/calicoctl /usr/…...

厂家直供:压缩空气加热器,支持非标设计制造

在现代化工业生产中&#xff0c;压缩空气作为仅次于电力的第二大动力源&#xff0c;其品质与温度直接影响着最终产品的质量与生产效率。从精细的喷涂工艺到严苛的半导体清洗&#xff0c;从化工反应到食品包装&#xff0c;压缩空气的温度控制已成为工艺链中不可或缺的关键一环。…...

结合数学思维来深入内存理解哈希散列的实现原理和处理冲突的逻辑靶

Julia&#xff08;julialang.org&#xff09;由Stefan Karpinski、Jeff Bezanson等在2009年创建&#xff0c;目标是融合Python的易用性、C的高性能、R的统计能力、Matlab的科学计算生态。 其核心设计哲学是&#xff1a; 高性能&#xff1a;编译型语言&#xff08;JIT&#xff0…...

Pi0具身智能v1在仓储物流中的应用:一套代码实现自动分拣

Pi0具身智能v1在仓储物流中的应用&#xff1a;一套代码实现自动分拣 1. 物流分拣的现状与挑战 走进任何一家现代物流仓库&#xff0c;你都会看到相似的场景&#xff1a;传送带上的包裹川流不息&#xff0c;工人们快速分拣着各种形状和大小的物品。这种传统分拣方式虽然成熟&a…...

如何快速提升中文文献管理效率:Jasminum插件3大核心功能完整指南

如何快速提升中文文献管理效率&#xff1a;Jasminum插件3大核心功能完整指南 【免费下载链接】jasminum A Zotero add-on to retrive CNKI meta data. 一个简单的Zotero 插件&#xff0c;用于识别中文元数据 项目地址: https://gitcode.com/gh_mirrors/ja/jasminum 还在…...

OpenClaw对话式开发:Qwen3-32B镜像生成Python脚本实例

OpenClaw对话式开发&#xff1a;Qwen3-32B镜像生成Python脚本实例 1. 为什么选择对话式开发 作为一名长期与Python打交道的开发者&#xff0c;我一直在寻找更高效的编码方式。传统IDE虽然功能强大&#xff0c;但面对重复性脚本编写时&#xff0c;仍然需要大量手动操作。直到尝…...