在C++编程中,处理文本是极其常见的任务。早期的C语言使用字符数组(char[])和指针来处理字符串,但这种方式容易出错、不够安全,也不够直观。为了解决这些问题,C++标准库引入了 std::string 类,它封装了字符串操作,让开发者能更高效、安全地处理文本。

C++的 string 库是标准模板库(STL)的一部分,定义在头文件 <string> 中。它提供了一个名为 std::string 的类,用于表示和操作可变长度的字符串。
使用 std::string 不需要手动管理内存,它会自动处理内存分配、释放、扩容等底层细节,大大降低了出错概率。
首先,要包含头文件:
#include <string>#include <iostream>using namespace std; // 或者使用 std:: 前缀// 空字符串string s1;// 用字符串字面量初始化string s2 = "Hello, C++!";// 使用构造函数string s3("Welcome to C++");// 复制另一个stringstring s4(s2);// 用5个'A'字符初始化string s5(5, 'A'); // 结果:"AAAAA"以下是 std::string 最常用的几个方法:
size() 或 length():返回字符串长度empty():判断是否为空clear():清空字符串append(str) 或 +=:拼接字符串substr(pos, len):截取子字符串find(str):查找子串位置c_str():返回C风格字符串(const char*)#include <iostream>#include <string>using namespace std;int main() { string greeting = "Hello"; string name = "Alice"; // 拼接字符串 string message = greeting + ", " + name + "!"; cout << message << endl; // 输出:Hello, Alice! // 获取长度 cout << "Length: " << message.length() << endl; // 查找子串 size_t pos = message.find("Alice"); if (pos != string::npos) { cout << "Found 'Alice' at position: " << pos << endl; } // 截取子串 string sub = message.substr(0, 5); // "Hello" cout << "Substring: " << sub << endl; return 0;}在实际开发中,经常需要将 string 与数字、C风格字符串等相互转换。
#include <string>int num = stoi("123"); // string to intfloat f = stof("3.14"); // string to floatdouble d = stod("2.718"); // string to double#include <string>string s1 = to_string(42); // "42"string s2 = to_string(3.1415); // "3.141500"string str = "Hello";const char* cstr = str.c_str(); // 转为C风格字符串// 反向转换string new_str(cstr); // 或 string new_str = cstr;string 和 char[],它们是不同类型。find() 时,若未找到子串,返回值是 string::npos,不是 -1。substr() 或访问 [0] 可能导致未定义行为,建议先检查 empty()。reserve() 预分配内存以提高性能。通过本教程,你已经掌握了 C++ string库详解 的核心内容,包括 string类用法、C++字符串操作 以及 C++标准库string 的常用技巧。无论你是初学者还是有一定经验的开发者,熟练使用 std::string 都能让你的代码更简洁、安全、高效。
记住:在现代C++开发中,优先使用 std::string 而不是C风格字符串,这是写出高质量代码的重要一步!
本文由主机测评网于2025-12-18发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://vpshk.cn/2025129514.html