string的搜索操作
string的搜索操作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_last_not_of(args) 在s中查找最后一个不在args中的字符
如果找到返回字符出现的下标,否则返回string::npos,返回类型为string::size_type
以上6个函数都分别有4种重载形式,pos可理解为下标
将args 分别替换为:
c,pos 从s中位置pos处开始查找字符c,pos默认为0
s2,pos 从s中位置pos处开始查找字符串s2,pos默认为9
cp,pos 从s中位置pos处开始查找cp指向的以空字符结尾的C风格字符串,pos默认为0
cp,pos,n 从s中位置pos开始查找指针cp指向的数组的前n个字符,pos和n无默认值 好久没上来过了,水点经验{:10_277:} 本帖最后由 花开自有丶花落 于 2017-4-23 17:58 编辑
最常见的形式是在字符串中查找子字符串
string::size_type pos = 0;
while( ( pos = s,find_first_of(number,pos) ) != string::npos )
{
cout<< pos <<" :" << s << endl;
++pos;
}
//如果找到number(不论number是字符串还是字符还是字符串),返回其下标并赋给pos,然后以其做下标打印,接下来递增继续查找,如果不其下标并赋给pos,然后以其做下标打印,接下来递增继续查找,如果不递增会从pos出开始查找,然而pos处就是目标,会不断返回以致陷入死循环
页:
[1]