find函数就是去寻找序列中的元素,找到后返回该元素的下标,看例子。
#include<iostream>
using namespace std;
int main()
{
string a="1234567890";
cout<<a.find('1');
}
运行结果:
这里的元素还可以是一串:
#include<iostream>
using namespace std;
int main()
{
string a="1234567890";
cout<<a.find("234");
}
返回第一个元素的下标:
find能干吗?
结合replace函数换个单词应该没问题:
#include<iostream>
using namespace std;
int main()
{
string a="I am a genius!",b="genius";
cout<<a<<endl;
a.replace(a.find(b),b.size(),"good student");
cout<<a;
}
注意
当find找不到目标时返回的是string::npos。
string::npos是字符串可储存的最大字符数,通常是无符号int或无符号long的最大取值。
这可以用来删除字符串中的子串,循环一直删,直到find找不到返回string::npos。
代码
#include<iostream>
#include<string>
using namespace std;
int main()
{
string a,b;
getline(cin,a);
getline(cin,b);
while(a.find(b)!=string::npos)
a.erase(a.find(b),b.size());
cout<<a;
}