string

string

在这里插入图片描述
string是表示字符串的字符串类, 该类的接口与常规容器的接口基本相同,再添加了一些专门用来操作string的常规操作。
使用时必须添加#include头文件。

一.string类常用接口说明

(一)string类对象的常见结构
在这里插入图片描述
在这里插入图片描述
(二) string类对象的容量操作
在这里插入图片描述
注意:
1.size()与length()方法底层实现原理完全相同,引入size()的原因是为了与其他容器的接口保持一致,一般情况下基本都是用size()
2. clear()只是将string中有效字符清空,不改变底层空间大小(不改变capacity)。
在这里插入图片描述
3.扩容
(1)扩容机制:
在这里插入图片描述
最开始扩2倍,之后1.5倍。
(2)reserve()
在这里插入图片描述
reserve手动扩容,改变的是capacity,知道需要多少数据,提前开好空间,提高效率。若手动扩容的量足够多了,则不会自动扩容。
(2)resize()

在这里插入图片描述
1删除在这里插入图片描述
2
插入在这里插入图片描述
3*扩容+插入在这里插入图片描述
(三)string类对象的访问及遍历操作
1.operator[](类似于数组遍历):
在这里插入图片描述
在这里插入图片描述
2.用迭代器(比较普遍的一种用法)
在这里插入图片描述
在这里插入图片描述
(逆序打印)
在这里插入图片描述
(可以直接对string对象进行修改)

3.for(auto)
在这里插入图片描述
(四)string类对象的修改操作
在这里插入图片描述
1.(后面加)
append
在这里插入图片描述

string s1("hello");
s1.append(3, 'x');
cout << s1 << endl;
string s2("  apple  ");
s1.append(s2);
cout << s1 << endl;
s1.append(s2.begin(), s2.end());
cout << s1 << endl;
s1.append(++s2.begin(), s2.end());
cout << s1 << endl;

+=
在这里插入图片描述
push_back
在这里插入图片描述
2.(往前加)
insert
在这里插入图片描述
在这里插入图片描述
3.replace
在这里插入图片描述
在这里插入图片描述
npos是string中一个静态成员,为-1,意思是直到结尾
在这里插入图片描述
4.assign直接覆盖
5.erase
在这里插入图片描述
6.swap(替换)
在这里插入图片描述
在这里插入图片描述

最后:
string开空间会开在堆上,在string(可看作字符串顺序表)实现的底层,private中会有char buff[16],超过16长度时采用char* _str,那是因为char buff[]在栈上开空间快,并且出作用域会销毁。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值