学习目录:
1.string类对象的常见构造(constructor)
1.构造空string类对象(重点)
2.用C-string来构造string类对象(重点)
3.string类对象包含n个字符c
4.拷贝构造函数(重点)
2.string类对象容量操作
1.size、length(返回字符串有效长度)重点
2.capacity(返回总空间大小)
3.empty(检查字符串是否为空) 重点
4.clear(清除有效字符) 重点
5.reserve(为字符串预留空间) 重点
6.resize 重点
3.string类对象增容操作
1.operator[]重载
2.at
3.operator+=运算符重载
4.push_back、append尾插
-----------------------------------------------------------------------------------------------------------------------
1.string类对象的常见构造(constructor)
1.构造空string类对象
2.用C-string构造string类对象
4.拷贝构造函数
3.string类对象包含n个字符c
不写拷贝构造的长度,默认拷贝到"\0" --- npos是string里的一个静态变量 npos=-1
size_t len=npos (-1 给给size_t 变成无符号整形的最大值了,默认直接拷贝都字符串的结尾)
---------------------------------------------------------------------------------------------------------------------------
2.string类对象容量操作
1.size 、 length
没有区别 (建议使用size)
2.capacity(容量是多大)
实际的空间大小是16字节,有一个给了"\0"(容量指的是能存储的有效字符)
3.clear(清除有效字符)
清除了有效字符,但并没有清楚容量
4.empty
空串返回真,不是空串返回假
--------------------------------------------------------------------------------------------------------------------------
3.string类对象增容操作
1.operator[]重载 (字符串数组,能够像数组一样访问字符串里的字符)
有两个版本 先介绍 char& operator[ ](size_t pos); (返回值是每个字符的引用)
用operator[] 读第i字符
用operator[] 改第i个字符(返回的是每个字符的引用,可以对每个字符的修改)
operator的底层引用
2.at
at和operator[ ]的实现的功能是一样的
at是当中函数来进行使用的
那么operator[]和at还是有区别的
区别在于检查越界的方式不一样 :
operator[] :断言
at :抛异常
我们再来看看at的报错
报异常
捕异常
3.back、front 和 push_back 、 append
back : 返回最后一个有效数据
front : 返回头上数据
---------------------------------------------
push_back : 只能尾插字符
append: 只能尾插字符串
operator+=运算符重载
既可尾插字符串、字符、也可以引用其它字符串进行尾插