1. 标准库中的string类
1.1 string类
string类的文档介绍
在 使用 string 类时,必须包含 #include 头文件以及 using namespace std ;
1.2 auto和范围for
// 不能做参数
void func2(auto a)
{}// 可以做返回值,但是建议谨慎使用
auto func3()
{return 3;
}
2. string类的常用接口说明
2.1 string类对象的常见构造
string() 用于创建一个空字符串的默认构造函数。
string(const char* s) 接受一个指向字符数组的指针作为参数。这个构造函数用于创建一个字符串对象,其内容由给定的字符数组初始化。
string(size_t n, char c) 接受两个参数:一个
size_t
类型的n
和一个char
类型的c
。这个构造函数用于创建一个字符串对象,其内容由重复的字符c
组成,重复次数为n
。
string(const string& s) 拷贝构造函数
2.2 string类对象的容量操作
1. `size()`: 返回字符串的长度,即字符的数量。
2. `length()`: 与 `size()` 相同,返回字符串的长度。
3. `capacity()`: 返回字符串的容量,即分配给字符串的内存空间大小。
4. `resize(size_t n)`: 调整字符串的大小,使其包含 `n` 个字符。如果 `n` 大于当前长度,则在末尾添加空格;如果 `n` 小于当前长度,则删除多余的字符。
5. `reserve(size_t n)`: 预留至少 `n` 个字符的空间,以便在不重新分配内存的情况下插入更多的字符。
6. empty:这个方法通常用于检查容器是否为空。如果容器为空,返回true;否则返回false。例如,对于std::vector,可以使用empty()方法来检查它是否为空。
7. clear:这个方法用于清空容器中的所有元素。例如,对于std::vector,可以使用clear()方法来删除所有元素,使其大小变为0。
2.3 string类对象的访问及遍历操作
1. **使用下标运算符`[]`访问字符**:通过下标运算符`[]`可以直接访问字符串中的某个字符。下标从0开始,直到`size() - 1`。
string s1("hello world\n");for (size_t i = 0; i < s1.size(); i++){cout << s1[i] << ' ';}
2. **使用迭代器遍历字符串**:`std::string`类提供了迭代器支持,可以使用迭代器来遍历字符串中的每个字符。
string s1("hello world\n");string::iterator it = s1.begin();while (it != s1.end()){cout << *it << ' ';it++;}
3. **使用范围for循环遍历字符串**:C++11引入的范围for循环可以更方便地遍历字符串中的每个字符。
string s1("hello world\n");for (auto ch : s1){cout << ch << ' ';}