作者:马志峰
链接:https://zhuanlan.zhihu.com/p/24498537
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
链接:https://zhuanlan.zhihu.com/p/24498537
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
声明:
- 文中内容收集整理自《C++ Primer 中文版 (第5版)》,版权归原书所有。
- 原书有更加详细、精彩的释义,请大家购买正版书籍进行学习。
- 本文仅作学习交流使用,禁止任何形式的转载
正文
- 构造
- substr
- 修改
- 搜索
- 比较
- 数值转换
构造
string s1;
string s2(s1); string s2 = s1;
string s3("val"); string s3 = "val";
string s4(n, 'c');
string s{
'a', 'b', 'c'};
string s = {
'a', 'b', 'c'};
string s(beg,end);
string s(n);
string s(cp,n); //n可选
string s(s2, pos2);
string s(s2, pos2, len2);
具体可以参与书上的内容,以及下面的网址
std::basic_string - cppreference.com
substr
s.substr(pos, n);
返回一个string,包含s中从pos开始的n个字符的拷贝
n的默认值为 s.size()-pos
pos不能越界,pos+n可以,只拷贝到string末尾
改变string的其他方法
- 顺序容器的assign、insert、erase、赋值操作
- 接受下标的insert和erase版本
- 接受c风格字符数组的insert和assign版本
- append和replace函数
具体参考 P323 表9.13
搜索操作
返回一个string::size_type类型的值,表示匹配发生位置的下标
如果搜索失败,返回一个名为string::npos的static成员
string::size_type是一个unsigned类型,应当避免使用int或其他带符号类型来保存搜索的返回值
s.find(args)
s.find_first_of(args)
s.find_first_not_of(args)
args必须是以下形式这一:
- c, pos //从位置pos开始查找字符c,pos默认为0
- s2, pos //查找字符串s2,pos默认为0
- cp, pos //查找c风格字符串,pos默认为0
- cp, pos, n //查找指针cp指向数组的前n个字符, pos和n无默认值
find----rfind
find_first_of----find_last_of
find_first_not_of----find_last_not_of
compare
s.compare(s2);
s.compare(pos1, n1, s2);
s.compare(pos1, n1, s2, pos2, n2);
s.compare(cp);
s.compare(pos1, n1, cp);
s.compare(pos1, n1, cp, n2);
数值转换
在内存中,数的字符表示不同于其数值
15:0000000000001111
“15”:0011000100110101
新标准引入了多个转换函数
to_string(val);
//转换成整数
//p是第一个非数值字符的下标,默认值为0
//b是基数,默认值为10
stoi(s, p, b);
stol(s, p, b);
stoul(s, p, b);
stoull(s, p, b);
//转换成浮点
stof(s,p)
stod(s,p)
stold(s,P)