str.find(ss)//返回字符串ss在str中的位置
str.find(ss,num) //在str[num]~str[n-1]范围内查找并返回字符串ss在str的位置
str.rfind(ss,num)在str[0]~str[num]范围内查找并返回字符串ss在str的位置(reverse)
例子:
#include <iostream>
using namespace std;
int main()
{
//string str("abcabcabcd");
string str="abcacbabcd";
string::size_type pos=0;
cout << str.find("a",2) << endl;
cout << str.rfind("c",5) << endl;//?如果出现多个c,好像返回最后一个
cout << str.find("bc") << endl;
cout << str.find("za") << endl; // 找不到,返回string::npos
return 0;
}
结果:
找出子字符串所有的出现位置
例子:
#include <iostream>
using namespace std;
int main()
{
//string str("abcabcabcd");
string str="abcabcbabcd";
string::size_type pos=0; //注意
while((pos=str.find("abc",pos))!=std::string::npos)
{
cout<<pos<<endl;
pos++;
}
return 0;
}
结果:
整理的很多的一篇文章:https://www.renfei.org/blog/introduction-to-cpp-string.html