在C++编程语言中,`std::string`类型是一个非常重要的工具,用于处理文本字符串。它是一个类模板,提供了一种高效且灵活的方式来创建、修改和管理字符串数据。本篇文章将详细探讨`std::string`类中的各种函数,以及如何进行常见的字符串操作。
一、`std::string`构造与初始化
1. 默认构造:`string()` 创建一个空字符串。
2. 指定长度构造:`string(size_t n, char c)` 创建一个长度为n的字符串,由字符c填充。
3. 字符串副本构造:`string(const string& str)` 或 `string(const char* s)` 创建一个字符串的副本。
二、字符串操作
1. 追加:`string& operator+=(const string& str)` 或 `string& operator+=(const char* s)` 将另一个字符串或字符数组追加到现有字符串的末尾。
2. 插入:`string& insert(size_t pos, const string& str)` 在指定位置插入一个字符串。
3. 删除:`string& erase(size_t pos = 0, size_t len = npos)` 删除指定位置开始的指定长度的子字符串。
三、访问字符串元素
1. 下标访问:`char& operator[](size_t pos)` 或 `const char& operator[](size_t pos) const` 访问字符串中的单个字符。
2. `at()` 方法:`char& at(size_t pos)` 或 `const char& at(size_t pos) const` 安全地访问指定位置的字符,会检查越界。
四、获取字符串信息
1. 长度:`size_t size() const` 返回字符串的长度,不包括结束符'\0'。
2. 容量:`size_t capacity() const` 返回当前已分配的空间,可以容纳的字符数量。
3. 是否为空:`bool empty() const` 如果字符串为空,返回true。
五、比较字符串
1. 相等:`bool operator==(const string& str) const` 或 `bool operator==(const char* s) const` 检查两个字符串是否相等。
2. 不等:`bool operator!=(const string& str) const` 或 `bool operator!=(const char* s) const` 检查两个字符串是否不等。
3. 大小关系:`bool operator<(const string& str) const`,`<=`, `>`, `>=` 分别用于比较大小。
六、查找和替换
1. 查找:`size_t find(const string& str, size_t pos = 0) const` 在字符串中查找子串,返回第一个匹配的位置。
2. 替换:`string& replace(size_t pos, size_t len, const string& str)` 或 `string& replace(size_t pos, size_t len, const char* s, size_t n)` 替换指定子串。
七、拷贝和赋值
1. 拷贝构造:`string(const string& str)` 复制一个字符串。
2. 赋值操作:`string& operator=(const string& str)` 或 `string& operator=(const char* s)` 用另一个字符串或字符数组赋值。
八、流操作
`std::string`与`std::iostream`兼容,可以直接通过`<<`和`>>`操作符进行输入输出。
九、其他常用方法
1. `void reserve(size_t n)` 预分配内存,确保至少能容纳n个字符。
2. `void shrink_to_fit()` 释放未使用的内存,优化内存使用。
以上是关于C++中`std::string`类的基本介绍,这个类提供了丰富的功能,使得处理字符串变得更加方便。在实际编程中,理解并熟练运用这些函数能够极大地提高代码效率和可读性。通过深入学习和实践,开发者可以更加自如地处理字符串相关的任务。