♣ string 的基类basic_string中没有虚函数,它无意成为基类。更像是为了处理字符相关的问题而专门提供的一个工具及操作方法。如:想要在一个字符串str1中查找str2,没必要每次都去写KMP算法,开源的口号就是不要重复发明*,利用string中的find()操作即可。笔者遇到碰到过的问题中就有类似问题:给定两棵树,要求判断tree2是不是tree1的子结构。序列化之后就可以用如下语句:
if(string::npos!=str1.find(str2))
return true;
♣ 它继承了c风格字符串(\0 结束)和操作,封装出来的对象更贴近用户,和vector一样是很好用的工具,所以觉得有必要整理一下。
1.元素访问
--[] :
--at(): 带访问检查(会抛出out_of_range异常)
--迭代器:
指针与数组的关系对string并不成立。string s, &s[0] 与 s 并不等。
2.初始化与赋值
--不能用字符和整数来初始化字符串;
但是字符可以赋值
string s = 'a'; X string s; s = 'a';√
3.到c风格的转换
利用c_str()产生c风格字符串,注意传中的0字符
4.拼接:+
5.插入:
--+=
---append
--insert
6.查找:find及其变种,返回值类型为size_type,没有找到返回npos;
7.替换:replace(可替换可删除),erase
8.子串substr():