C++——字符串string
C语言中对字符串的表示通常用指针,新手会面临内存泄漏或者段错误等众多问题。
在 C++ 中, string 类是标准库的一部分,用于表示和操作字符串。它是对传统的 C 风格字符串(以空
字符 ‘\0’ 结尾的字符数组)的一个更安全、更方便的封装。 string 类是在 头文件中定义
的,并且位于 std 命名空间中。
string 类提供了许多有用的功能和特性,包括:
- 动态大小:与 C 风格的字符串不同, string 对象可以动态改变大小,这意味着你可以在运行时添
加或移除字符,而不需要担心分配和释放内存。
-
安全性:由于 string 管理其自己的内存,因此减少了内存泄漏和缓冲区溢出的风险。
-
方便的成员函数: string 类提供了各种操作字符串的方法,如 append() (添加)、 insert()
(插入)、 erase() (删除)、 substr() (获取子字符串)等。
- 操作符重载: string 类重载了多个操作符,使得字符串比较、连接和赋值更加直观。例如,你可
以使用 + 操作符来连接两个字符串,或者使用 == 操作符来比较两个字符串是否相等。
- 迭代器支持:像其他标准库容器一样, string 类也支持迭代器,使得你可以使用迭代器来遍历字
符串中的字符。
- 与 C 风格字符串的兼容性: string 类提供了与 C 风格字符串互操作的功能,例如,你可以使用c_str() 方法来获取一个与 C 风格字符串兼容的、以 null 结尾的字符数组。
示例
#include <iostream>
#include <string>
int main() {
std::string str = "Hello, world!";
std::cout << str << std::endl; // 输出字符串
str += " I am a C++ string."; // 字符串连接
std::cout << str << std::endl;
std::string substr = str.substr(7, 5); // 获取子字符串
std::cout << "Substring: " << substr << std::endl;
return 0;
}