文章目录
- 1. string类对象遍历操作
- 1.1 标准库中的成员函数begin( )和end( )
- 1.2 标准库中的成员函数rbegin( )和rend( )
- 1.3 C++11引入的4个标准库中的成员函数
- 2. string类对象的访问
- 2.1 operator[ ]运算符重载访问字符串字符
- 2.2 公有成员函数at访问字符
- 2.3 公有成员函数back()和front()访问字符
- 3. string类对象的修改操作
- 3.1 运算符重载operator+=追加字符串/字符
- 3.2 push_back尾插字符c
- 3.3 append追加字符串
- 3.4 尾删字符pop_back
- 3.5 assign替换string类对象内容(全部替换)
- 3.6 replace替换string类对象内容(部分替换)
- 3.7 insert插入字符串
- 3.8 返回值npos
- 3.9 erase删除部分字符
- 3.10 swap交换函数
- 4 练习
- 4.1 练习题:反转字母
- 4.2 练习题:找字符串中第一个只出现一次的字符
- 4.3 "整数"字符串相加
1. string类对象遍历操作
1.1 标准库中的成员函数begin( )和end( )
- begin()和end()听起来就是访问字符串首尾的字符,不过end指向字符串末尾’\0’
1.2 标准库中的成员函数rbegin( )和rend( )
- rbegin()和rend()用来逆序字符串再合适不过了、
1.3 C++11引入的4个标准库中的成员函数
2. string类对象的访问
2.1 operator[ ]运算符重载访问字符串字符
2.2 公有成员函数at访问字符
- at和运算符[ ]访问字符的区别是:运算符[ ]下标如果越界,编译器直接断言报错,终止程序运行;at访问字符时,如果下标越界,那么它自动捕获异常,但它不会终止程序运行
2.3 公有成员函数back()和front()访问字符
3. string类对象的修改操作
- 常见的有
函数名 | 功能说明 |
---|---|
push_back | 在字符串后插入字符c |
append | 在字符串后追加一个字符串 |
operator+= | 在字符串后追加字符串str |
3.1 运算符重载operator+=追加字符串/字符
3.2 push_back尾插字符c
3.3 append追加字符串
分类 | 功能 |
---|---|
string& append (const string& str) | 追加string类对象 |
string& append (const string& str, size_t subpos, size_t sublen) | 追加string类对象,从subpos位置开始,追加sublen个字符 |
string& append (const char* s) | 追加常量字符串 |
string& append (const char* s, size_t n) | 追加常量字符串,从首字符开始,追加n个 |
string& append (size_t n, char c) | 追加n个c字符 |
3.4 尾删字符pop_back
3.5 assign替换string类对象内容(全部替换)
- assign在替换字符串时,会将原字符串所有内容全部替换为新的值
3.6 replace替换string类对象内容(部分替换)
- 对于replace,只需要熟悉上述两个常用的接口,用常量字符串和string类对象替换
- 与assign对比,assign是将原字符串整个替换掉,而replace相对比较温柔,它会让你选择要替换的字符串位置和要替换字符的个数
- 当len等于0时,replace就和insert插入的功能类似
3.7 insert插入字符串
- 关于insert的其他接口暂不赘述,可下去查文档实现,对于迭代器的接口,后面使用到会讲述
3.8 返回值npos
3.9 erase删除部分字符
- 可以看出,erase删除字符后,string类对象的size会发生变化,而capacity则不会改变
3.10 swap交换函数
4 练习
4.1 练习题:反转字母
4.2 练习题:找字符串中第一个只出现一次的字符
4.3 "整数"字符串相加
- 思路:首先找到两个"整数"字符串的尾元素下标,然后让尾元素相加,相加之后记录进位的next的值,假如8+7=13,相加之后的字符串尾元素应该为13,那么实际上尾元素应该是13%10=3,进位数next=13/10=1,然后两个尾元素下标减减,如果短的字符串结束,那让长的字符串+0即可,记录新的字符串str,用来加两个字符串相加后的尾元素