1、为什么学习string类
1.1c语言中的字符串
C语言,字符串时以'\0'结尾的一些字符的集合,为了操作方便,C标准库中提供了一些str系列的库函数,但是这些库函数与字符串是分离开的,不太符合oop的思想,而且底层空间需要用户自己管理,稍不留神可能还会越界访问
2、标准库的string类
2.1、在使用string类时,必须包含#include头文件以及using namespace std;
2.2、auto和范围for
auto关键字
2.3string类的常用接口说明
2.3.1string类的常见构造
2.3.1.1拷贝
(1)从第pos字符开始拷贝,拷贝len个字符
当不传第三个参数时
(2)从第n个字符开始拷贝,直到结束
(3)
前n个字符初始化
2.3.1.2
底层:
越界也能快速检查出来
2.3.2遍历
(1)下标+[]
(2)迭代器
有点像指针,但有可能是指针,有可能不是
规定begain访问最开始的迭代器,end是返回最后一个有效字符的下一个,也就是‘\0',所有容器都有自己的iterator
反向迭代器
const迭代器
不能修改
const反向迭代器
(3)范围for
自动赋值,自动迭代,自动判断结束;底层就是迭代器
迭代器是可以修改的
恢复后
输出s2,s2没有变
这是因为在范围for中,底层迭代器,将*it拷贝’给ch,改变时只是改变了形参,所以修改时要加引用
auto的符号必须具有初始值设定项,不能定义数组,不能做参数
2.3.3reserve
vs不缩容,
2.3.4clear
不清容量、