Real-Ying

string额外操作

构造string的其他方法

操作解释
string s(cp, n) scp指向的数组中前n个字符的拷贝,此数组至少包含n个字符
string s(s2, pos2) sstring s2从下标pos2开始的字符的拷贝。若pos2 > s2.size(),则构造函数的行为未定义。
string s(s2, pos2, len2) sstring s2从下标pos2开始的len2个字符的拷贝。
  • n,len2,pos2都是无符号值。

substr操作

操作解释
s.substr(pos,n) 返回一个string,包含s中从pos开始的n个字符的拷贝。pos的默认值是0,n的默认值是s.size() - pos,即拷贝从pos开始的所有字符。

改变string的其他方法

操作解释
s.insert(pos, args) pos之前插入args指定的字符。pos可以使是下标或者迭代器。接受下标的版本返回指向s的引用;接受迭代器的版本返回指向第一个插入字符的迭代器。
s.erase(pos, len) 删除从pos开始的len个字符,如果len被省略,则删除后面所有字符,返回指向s的引用。
s.assign(args) s中的字符替换成args指定的字符。返回一个指向s的引用。
s.append(args) args指定的字符追加到s,返回一个指向s的引用。
s.replace(range, args) 删除s中范围range中的字符,替换成args指定的字符。返回一个指向s的引用。

 

· 对于args不同的表现形式(assign、append、erase,没有 ),将其作为参数的函数有多个重载版本,P325

 

string搜索操作

  • string类提供了6个不同的搜索函数,每个函数都有4个重载版本。
  • 每个搜索操作都返回一个string::size_type值,表示匹配发生位置的下标。如果搜索失败则返回一个名为string::nposstatic成员(类型是unsigned const string::size_type,初始化值是-1,也就是string最大的可能大小)。
  • 可利用while(pos = find调用 ){ ...pos递增; }循环找出所在的所有位置
  • 逆向搜索返回的序号和正序相反
搜索操作解释
s.find(args) 查找sargs第一次出现的位置
s.rfind(args) 查找sargs最后一次出现的位置
s.find_first_of(args) s中查找args中任何一个字符第一次出现的位置
s.find_last_of(args) s中查找args中任何一个字符最后一次出现的位置
s.find_first_not_of(args) s中查找第一个不在args中的字符
s.find_first_not_of(args) s中查找最后一个不在args中的字符

args必须是一下的形式之一:

args形式解释
c, pos s中位置pos开始查找字符cpos默认是0
s2, pos s中位置pos开始查找字符串spos默认是0
cp, pos s中位置pos开始查找指针cp指向的以空字符结尾的C风格字符串。pos默认是0

cp, pos,n

s中位置pos开始查找指针cp指向的前n个字符。posn无默认值。

 

s.compare的几种参数形式

除了关系运算符外string类型还提供了一组compare函数,逻辑类似于C标准库的strcmp函数,根据s是等于、大于还是小于参数指定的字符串,s.compare返回0、正数或负数。

参数形式解释
s2 比较ss2
pos1, n1, s2 比较spos1开始的n1个字符和s2
pos1, n1, s2, pos2, n2 比较spos1开始的n1个字符和s2
cp 比较scp指向的以空字符结尾的字符数组
pos1, n1, cp 比较spos1开始的n1个字符和cp指向的以空字符结尾的字符数组
pos1, n1, cp, n2 比较spos1开始的n1个字符和cp指向的地址开始n2个字符

 

string和数值数据的相互转换

转换解释
to_string(val) 一组重载函数,返回数值valstring表示。val可以使任何算术类型。对每个浮点类型和int或更大的整型,都有相应版本的to_string()。和往常一样,小整型会被提升。
stoi(s, p, b) 返回s起始子串(表示整数内容)的数值,ps中第一个非数值字符的下标,默认是0,b是转换所用的基数。返回int
stol(s, p, b) 返回long
stoul(s, p, b) 返回unsigned long
stoll(s, p, b) 返回long long
stoull(s, p, b) 返回unsigned long long
stof(s, p) 返回s起始子串(表示浮点数内容)的数值,ps中第一个非数值字符的下标,默认是0。返回float
stod(s, p) 返回double
stold(s, p) 返回long double

 

    • 如果string不能转换为一个数值 抛出一个invalid_argument异常,如果转换得到的数值无法用任何类型来表示抛出out_of_range异常

posted on 2020-03-15 00:04  Real-Ying  阅读(129)  评论(0编辑  收藏  举报

导航