string(一)
一、了解string
可以看成是字符顺序表。
二、string遍历方式
1、下标+[ ]
重载了[]
for(int i = 0; i < s.size(); i++)
{cout << s[i];
}
2、迭代器
auto it = s.begin();
while(it != s.end())
{cout << *it;it++;
}
3、范围for
for(auto ch : s)
{cout << ch;
}
4、反向迭代器
auto it = s.rbegin();
while(it != s.rend())
{cout << *it;it++;
}
5、const迭代器
迭代器是通用的遍历,虽然没有[]方便,但是不是所有容器都用[]遍历,而且迭代器的初衷就是能像指针一样访问对象。
三、string常见接口
1、操作空间
reserve
开出 n 大小的 string
只有当 n > _capacity 时才起作用,所以 reserve 只能扩容,不能缩容。
resize
调整 string 大小为 n,默认填充字符 \0
当 n < _size 时,string 删除字符直到大小为 n
当 _size < n < _capacity 时,string 插入n - _size 个 c
当 n > _capacity 时,string 扩容
2、修改
尾插
增删
3、查找
一个从头找,一个从尾找
4、其他
c_str
在库里面 string 其实是有 \0 结尾的,就是为了 c_str() 返回一个 const 字符串。因为 c 语言规则是字符串以 \0 结尾。
substr
从 pos 位置提取 len 个长度的字符串。
getline
cin 和 scanf 都是以空格和换行符作为输入结束的标志,但是当我们想获取一个中间带有空格的字符串就要用 getline 了。
四、C语言字符串常见接口
1、strcpy
拷贝字符串到指定位置,注意直接拷贝到原字符串的 \0 结束。
2、strncpy
拷贝原字符串的 num 个字符到指定位置
3、strstr
返回 str1 中第一次出现 str2 的指针位置。
4、strcmp
当 str1 第一次与 str2 相同位置的字符不同时,str1 的字符大就返回 >0,否则就 <0
如果相同就返回0
5、memcpy
拷贝原字符串 num 大小到指定位置。