C++ 额外的string操作
构造string的其他方法
除了已经介绍过的string还支持另外三个构造函数
【资料图】
这些构造函数接受一个string或一个const char*参数,还接受(可选的)指定拷贝多少个字符的参数。
通常我们从一个const char*创建string时,指针指向的数组必须以空字符结尾,拷贝操作遇到空字符停止。
substr操作
可以传递给substr一个可选的开始位置和计数值,返回string的一部分
改变string的其他方法
除了迭代器版本的insert和erase外,string还提供了下标的版本
标准库string类型还提供了接受C风格字符数组的insert和assign版本。
我们也可以指定将来自其他string或子字符串的字符插入当前string中或赋予当前string
append和replace函数
append操作时在string末尾进行插入操作的一种简写形式
replace是调用erase和insert的一种简写方式
string的搜索操作
string提供了六个搜索函数,每个函数都返回string::size_type的值,表示匹配发生位置的下标,如果搜索失败,则返回一个名为string::npos的static成员。标准库将npos定义为一个const string::size_type类型,并初始化为-1。
npos为一个unsigned类型,此初始值意味着npos等于任何string最大的可能大小。
find返回找到的第一个匹配位置的下标,否则返回npos
搜索时大小写敏感的,要区分大小写。
一个更复杂的问题时查找与给定字符串中任何一个字符匹配的位置。
如果要搜索第一个不在参数中的字符,应该调用find_first_not_of。
指定在哪里开始搜索
我们可以传递给find操作一个可选的开始位置。这个参数指出从哪个位置开始进行搜索,默认情况下,此位置被置为0。
上面的while的条件中,我们找到name中pos下标之后的第一个数字的下标返回给pos,只要pos不为npos就继续循环,函数体中的++pos是防止while永远读入的是第一个匹配的下标。
逆向搜索标准库还提供了从结尾向头部搜索的函数rfind
compare函数
根据模式串是等于、大于还是小于目标串,模式串.compare分别返回0、正数或负数。