【C++】string类(介绍、常用接口)

03-13 阅读 0评论

🌈个人主页:秦jh__https://blog.csdn.net/qinjh_?spm=1010.2135.3001.5343
🔥 系列专栏:http://t.csdnimg.cn/eCa5z

【C++】string类(介绍、常用接口),【C++】string类(介绍、常用接口),词库加载错误:未能找到文件“C:\Users\Administrator\Desktop\火车头9.8破解版\Configuration\Dict_Stopwords.txt”。,使用,我们,接口,第1张
(图片来源网络,侵删)

【C++】string类(介绍、常用接口)

目录

string类的常用接口说明

string类对象的常见构造

​编辑

 string字符串的遍历(迭代器)

【C++】string类(介绍、常用接口),【C++】string类(介绍、常用接口),词库加载错误:未能找到文件“C:\Users\Administrator\Desktop\火车头9.8破解版\Configuration\Dict_Stopwords.txt”。,使用,我们,接口,第3张
(图片来源网络,侵删)

下标加[](operator[])

 迭代器iterator(begin、end)

反向迭代器(rbegin、rend)

范围for

 容量操作

 size、length、max_size、capacity

【C++】string类(介绍、常用接口),【C++】string类(介绍、常用接口),词库加载错误:未能找到文件“C:\Users\Administrator\Desktop\火车头9.8破解版\Configuration\Dict_Stopwords.txt”。,使用,我们,接口,第4张
(图片来源网络,侵删)

shrink_to_fit 

reserve 

 resize

at 

修改操作

 push_back

append 

 operator+=

assign 

insert 

erase 

replace 

c_str

find

string类非成员函数

relational operators

​编辑

 operator+

getline

to_string、stod


前言

    💬 hello! 各位铁子们大家好哇。

             今日更新了string的内容

    🎉 欢迎大家关注🔍点赞👍收藏⭐️留言📝

使用string类时,必须包含#include头文件以及using namespace std;

string类的常用接口说明

string类对象的常见构造

【C++】string类(介绍、常用接口)

【C++】string类(介绍、常用接口)

 第一行是构造一个空字符串。第二行是构造输入的字符串。第三行是拷贝构造。第四行是从下标为5开始的三个字符构造,当第三个参数大于末尾下标时,或者当第三个参数不写时,就会把剩下全部的字符用来构造。

【C++】string类(介绍、常用接口)

上图中,s3是用n个字符c构造。s5是从字符串中,用前3个构造。 s0=s3是赋值。

 string字符串的遍历(迭代器)

下标加[](operator[])

【C++】string类(介绍、常用接口)

【C++】string类(介绍、常用接口)

在c++中,字符串后面是有'\0'的。但是size是不会计算'\0'的。如上图。 

【C++】string类(介绍、常用接口)

【C++】string类(介绍、常用接口)

下标加[]的方式,不仅可以读取,还可以修改。 

我们还发现,他有两种重载形式(this指针不同):

【C++】string类(介绍、常用接口)

如果是const修饰的,就不能修改,只能读。 

 迭代器iterator(begin、end)

【C++】string类(介绍、常用接口)

【C++】string类(介绍、常用接口)

迭代器iterator是一个类型,是定义在string类里面的,需要指定类域才能用。end()是最后一个有效字符的下一个位置,即‘\0’。begin()是起始位置。他模拟指针的行为,但他不是指针,因此他也可读可写。

反向迭代器(rbegin、rend)

【C++】string类(介绍、常用接口)

【C++】string类(介绍、常用接口)


【C++】string类(介绍、常用接口)

【C++】string类(介绍、常用接口)

当我们的对象是const对象,我们要用对应的const的iterator。end也是如此。用const修饰后,就不能修改了,只能读,不能写。如果是反向的,就是    string::const_reverse_iterator 

范围for

【C++】string类(介绍、常用接口)

范围for遍历,底层其实也是迭代器。写起来会比较简洁。 

 容量操作

 size、length、max_size、capacity

【C++】string类(介绍、常用接口)

size和length是一样的,一般使用size。 max_size就是最大的长度,实际上没什么意义。capacity就是容量。

【C++】string类(介绍、常用接口)

capacity实际不包含'\0'占用的空间的,虽然写着15,但实际是16。31实际是32。刚开始是两倍的扩,后面就是1.5倍的扩。但是扩容机制是不确定的。 

【C++】string类(介绍、常用接口)

clear就是清除数据,但是清不清空间是不确定的。 

shrink_to_fit 

如果想清理空间,就要缩容:

【C++】string类(介绍、常用接口)

【C++】string类(介绍、常用接口)

 缩容会把空间减少到size的大小。清空时,最小的大小是16。 


reserve 

我们插入数据,空间不够,会自动扩容。如果想要手动扩容,就要用reserve。 

【C++】string类(介绍、常用接口)

【C++】string类(介绍、常用接口)

 如果我们知道大概需要多少空间,可以请求空间。这样就不需要频繁的扩容,频繁扩容会降低效率。不过我们申请100个,它不一定就给100个,可能会给更大的空间。如果我们给的比当前的capacity小,他就不会生效。只有比当前capacity大,才会扩容。


 resize

【C++】string类(介绍、常用接口)

【C++】string类(介绍、常用接口)

【C++】string类(介绍、常用接口)

【C++】string类(介绍、常用接口)

 resize是改变size的大小。如果改变后的大小比当前小,就删除。如果大于当前size,小于capacity,就插入。如果大于capacity就扩容+插入。resize有两个版本,如果第二个参数不写,就默认插入'\0',如果写了,就插入该字符。


at 

【C++】string类(介绍、常用接口)

【C++】string类(介绍、常用接口)

at和operator[]的使用基本一样。区别在于越界报错时,[]会报断言错误,at会报没异常的问题。


免责声明
本网站所收集的部分公开资料来源于AI生成和互联网,转载的目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。
文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

发表评论

快捷回复: 表情:
评论列表 (暂无评论,人围观)

还没有评论,来说两句吧...

目录[+]