为什么学 string?
C 里用 char* 管字符串太痛苦了——长度得自己记、内存得自己管,溢出是家常便饭。C++ 搞出 std::string 把这些脏活都包起来,用着就放心多了。而且它的实现处处透着 RAII 和拷贝控制的味道,搞懂一个 string,对容器的设计思想也能摸到门道。面试也爱拿它出题,手写 String 类几乎是标配。
用之前,几个顺手的小工具
#include <string>
using namespace std;
C++11 带来的 auto 和范围 for 让 string 用起来更舒服。auto 让编译器去猜类型,省得敲一堆 iterator。auto 声明指针和 auto* 没区别,但引用必须写 &,不然就变成值拷贝了:
int x = 10;
int& ref = x;
auto a = ref; // a 是 int,独立变量
auto& b = ref; // b 是 int&,x 的别名
b = 30; // x 变成 30
范围 for 遍历容器很清爽,写法和 Python 一个味儿:
string s = "hello";
for (char ch : s) cout << ch; // 逐个输出
for (auto& ch : s) ch = toupper(ch); // 修改原串
记住,不想拷贝就用 auto&,只读就 const auto&。
常用接口:该有的都有
构造
string 的构造函数就那几样:
string s1; // 空串
string s2("Hello"); // C 风格字符串
string s3(5, );
;


