C语言中对字符串的表示通常用指针,新手会面临内存泄漏或者段错误等众多问题。
在 C++ 中, string 类是标准库的一部分,用于表示和操作字符串。它是对传统的 C 风格字符串(以空 字符 '\0' 结尾的字符数组)的一个更安全、更方便的封装。 string 类是在 头文件中定义 的,并且位于 std 命名空间中
c++中提供的string类功能
- 动态大小:与 C 风格的字符串不同, string 对象可以动态改变大小,这意味着你可以在运行时添 加或移除字符,而不需要担心分配和释放内存。
- 安全性:由于 string 管理其自己的内存,因此减少了内存泄漏和缓冲区溢出的风险。
- 方便的成员函数: string 类提供了各种操作字符串的方法,如 append() (添加)、 insert() (插入)、 erase() (删除)、 substr() (获取子字符串)等。
- 操作符重载: string 类重载了多个操作符,使得字符串比较、连接和赋值更加直观。例如,你可 以使用 + 操作符来连接两个字符串,或者使用 == 操作符来比较两个字符串是否相等。
- 迭代器支持:像其他标准库容器一样, string 类也支持迭代器,使得你可以使用迭代器来遍历字 符串中的字符。
- 与 C 风格字符串的兼容性: string 类提供了与 C 风格字符串互操作的功能,例如,你可以使用 c_str() 方法来获取一个与 C 风格字符串兼容的、以 null 结尾的字符数组。
常用成员函数及其功能和参数
- 函数名
- length() 或 size() 返回字符串的长度 返回size_t
- empty() 检查字符串是否为空 返回bool
- append(const string& str) 向字符串末尾添加另一个字符串 返回string&
- str :要追加的字符串
- substr(size_t pos = 0, size_t len = npos) 返回一个子字符串 返回string
- pos :子字符串 的起始位置 len :子字符串 的长度
- find(const string& str, size_t pos = 0) 查找子字符串出现的位置 返回size_t
- str :要查找的 字符串 pos :搜索起始 位置
- compare(const string& str) 比较两个字符串 返回int
- str :要比较的字符串
- erase(size_t pos = 0, size_t len = npos) 删除字符串中的一部分 返回string&
- pos :起始位置 len :要删除的 长度
- insert(size_t pos, const string& str) 在指定位置插入字符串 返回string&
- pos :插入位置 str :要插入的 字符串
- replace(size_t pos, size_t len, const string& str) 替换字符串中的一部分 返回string&
- pos :起始位置 len :要替换的 长度 str :替换的字 符串
- c_str() 返回 C 风格字符串表示 返回const char*
- operator[] (size_t pos) 访问指定位置的字符 返回char&
- pos :字符位置
示例
#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;
}