从零开始用熟 C++ string
为什么要折腾字符串?C 语言里的 strcpy、strcat 那一套操作麻烦,容易越界,还得自己管理内存。到了 C++,直接用 std::string 省心得多,而且它还跟 STL 迭代器、算法无缝接合。下面梳理一下平常工作中用得上的 string 常用操作。
构造和初始化
构造函数不多,几个常用的足够:
string s1; // 空串
string s2("hello friend"); // C 风格字符串
string s3(s2); // 拷贝
string s4(5, 'x'); // 5 个 'x'
顺手把 <string> 头文件加上,using namespace std; 在示例里偷个懒,实际项目里慎重。
访问与遍历:下标、迭代器和范围 for
单字符访问用 operator[],跟数组一样直接:
string s("hello");
s[0] = 'H'; // 修改
遍历的话,最顺手的是 C++11 的范围 for:
for (char ch : s)
cout << ch << ' ';
想修改元素,记得用引用:
for (char& ch : s)
ch = toupper(ch);
迭代器提供了统一的容器访问方式,不想跟下标打交道时很管用。正向迭代器:
for (auto it = s.begin(); it != s.end(); ++it)
cout << *it;
反向迭代器 rbegin() / 也类似,从后往前溜达。


