C++标准库中的string类操作详解

需积分: 19 10 下载量 43 浏览量 更新于2024-09-17 1 收藏 41KB DOC 举报
"C++ 字符串操作" C++标准库中的`std::string`类是处理字符串的强大工具,相比传统的`char*`数组,它提供了更安全、更方便的接口。`std::string`类拥有丰富的成员函数,使得字符串操作变得简单易懂,避免了内存管理和长度计算的繁琐步骤。 首先,引入`<string>`头文件是使用`std::string`的基础。例如: ```cpp #include <string> ``` 1. 声明和初始化字符串 声明一个`std::string`变量可以直接不带初始值,如`string str;`,这会创建一个空字符串。`std::string`类提供了多种构造函数,可以用于不同方式的初始化: - `string s;` - 创建空字符串 - `string s = "hello";` - 用给定的C风格字符串初始化 - `string s = another_string;` - 复制另一个字符串 - `string s(str, n);` - 从`str`的前`n`个字符创建字符串 - `string s(str.begin(), str.end());` - 用迭代器范围初始化 2. 字符串操作函数 - `=` 和 `assign()` - 用于给字符串赋值,`str = "new value"` 或 `str.assign("new value")` - `swap()` - 交换两个字符串的内容,如 `str1.swap(str2)` - `+=`, `append()`, `push_back()` - 在字符串末尾添加字符或字符串,如 `str += 'c';` 或 `str.append(another_str)` - `insert()` - 在指定位置插入字符或字符串,如 `str.insert(pos, "insertion")` - `erase()` - 删除字符串中的部分字符,如 `str.erase(pos, len)` - `find()`, `find_first_of()`, `find_last_of()` - 查找子字符串或字符的位置 - `replace()` - 替换字符串的一部分,如 `str.replace(pos, len, new_str)` - `compare()` - 比较字符串,返回值可判断它们的顺序 - `length()`, `size()` - 获取字符串长度 - `empty()` - 检查字符串是否为空 - `substr()` - 提取字符串的一部分 - `c_str()` - 获取C风格的字符数组(const char*) 3. 字符串比较和操作 在C++中,你可以直接使用`==`、`!=`、`<`、`<=`、`>`和`>=`比较字符串。这些操作符是重载的,会根据字符串的内容进行字典顺序比较。 4. 字符串转换 `std::string`还支持与`char*`之间的转换,如`str.c_str()`可以获取C风格的字符串,`const char* cstr = "text"; string str(cstr);`则可以将C风格字符串转换为`std::string`。 5. 其他功能 - `getline()` - 从输入流中读取一行,通常用于处理用户输入或文件读取 - `std::stringstream` - 可以像操作字符串一样读写流,便于字符串与数值的相互转换 `std::string`类为C++程序员提供了强大且灵活的字符串处理能力,极大地简化了字符串操作,降低了出错的可能性。在编写C++代码时,优先考虑使用`std::string`而不是传统的`char*`数组。