花开自有丶花落 发表于 2017-4-23 17:20:55

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无默认值

花开自有丶花落 发表于 2017-4-23 17:21:30

好久没上来过了,水点经验{:10_277:}

花开自有丶花落 发表于 2017-4-23 17:56:18

本帖最后由 花开自有丶花落 于 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]
查看完整版本: string的搜索操作