string额外操作
构造string的其他方法
操作 | 解释 |
---|---|
string s(cp, n) |
s 是cp 指向的数组中前n 个字符的拷贝,此数组至少包含n个字符 |
string s(s2, pos2) |
s 是string s2 从下标pos2 开始的字符的拷贝。若pos2 > s2.size() ,则构造函数的行为未定义。 |
string s(s2, pos2, len2) |
s 是string 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::npos
的static
成员(类型是unsigned conststring::size_type
,初始化值是-1,也就是string
最大的可能大小)。 - 可利用while(pos = find调用 ){ ...pos递增; }循环找出所在的所有位置
- 逆向搜索返回的序号和正序相反
搜索操作 | 解释 |
---|---|
s.find(args) |
查找s 中args 第一次出现的位置 |
s.rfind(args) |
查找s 中args 最后一次出现的位置 |
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 开始查找字符c 。pos 默认是0 |
s2, pos |
从s 中位置pos 开始查找字符串s 。pos 默认是0 |
cp, pos |
从s 中位置pos 开始查找指针cp 指向的以空字符结尾的C风格字符串。pos 默认是0 |
|
从s 中位置pos 开始查找指针cp 指向的前n 个字符。pos 和n 无默认值。 |
s.compare的几种参数形式
除了关系运算符外string类型还提供了一组compare函数,逻辑类似于C标准库的strcmp
函数,根据s
是等于、大于还是小于参数指定的字符串,s.compare
返回0、正数或负数。
参数形式 | 解释 |
---|---|
s2 |
比较s 和s2 |
pos1, n1, s2 |
比较s 从pos1 开始的n1 个字符和s2 |
pos1, n1, s2, pos2, n2 |
比较s 从pos1 开始的n1 个字符和s2 |
cp |
比较s 和cp 指向的以空字符结尾的字符数组 |
pos1, n1, cp |
比较s 从pos1 开始的n1 个字符和cp 指向的以空字符结尾的字符数组 |
pos1, n1, cp, n2 |
比较s 从pos1 开始的n1 个字符和cp 指向的地址开始n2 个字符 |
string和数值数据的相互转换
转换 | 解释 |
---|---|
to_string(val) |
一组重载函数,返回数值val 的string 表示。val 可以使任何算术类型。对每个浮点类型和int 或更大的整型,都有相应版本的to_string() 。和往常一样,小整型会被提升。 |
stoi(s, p, b) |
返回s 起始子串(表示整数内容)的数值,p 是s 中第一个非数值字符的下标,默认是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 起始子串(表示浮点数内容)的数值,p 是s 中第一个非数值字符的下标,默认是0。返回float |
stod(s, p) |
返回double |
stold(s, p) |
返回long double |
-
- 如果string不能转换为一个数值 抛出一个invalid_argument异常,如果转换得到的数值无法用任何类型来表示抛出out_of_range异常