1. string的内存布局
x | x | x | x | x | \0 |
---|---|---|---|---|---|
begin (指针迭代器) |
end (指针迭代器) |
||||
front (引用) |
back (引用) |
2. string的特点
- 自动维护生命周期和内存管理
- 支持拼接(+, +=)、查找(find, rfind)、读入(istream, getline)、数字(stoi系列,
to_string
)、转字符数组(c_str
) - size()为O(1),而strlen()为O(n)
3. string的使用建议
- 不推荐使用const string&,因为:
- “xxxxx\0”的类型是const char *
- string产生的是堆上内存的分配
- 如果不需要个性字符串的内容, 使用
string_view
或者const char *. - 函数返回修改过的入参,使用string作为返回类型
- 函数要修改调用者的字符串,使用string &作为参数类型