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异常
浙公网安备 33010602011771号