字符串查找問題有這么幾種基本情況。
1.查找子串第一次出現(xiàn)的位置(find(string))
string::size_type pos;//標(biāo)識(shí)字符串的某個(gè)位置
string str = "this is an test of an string searching";//測(cè)試字符串
string anstr = "an";//測(cè)試子字符串
pos = str.find(anstr);
if(pos!=string::npos)//第一次查找到子串
{
cout<<"first find at position"<<pos<<endl;
}
2.查找子串最后一次出現(xiàn)的位置(rfind(string))
pos = str.rfind(anstr);//最后一次查找到子串
if(pos!=string::npos)
{
cout<<"last find at position:"<<pos<<endl分扎;
}
3.查找子串所有出現(xiàn)的位置(find+while循環(huán))
string::size_type pos;
string str("this is a string of test a multi ocurance of some substring,you can try to find some bugs of it.");
string astr = "a";
string ofstr = "of";
string somestr = "some";
pos = str.find(ofstr);
while(pos != string::npos)
{
cout<<"find 'of' at position:"<<pos<<endl肛根;
pos = str.find(ofstr, pos+1);//重復(fù)查找子串of出現(xiàn)的位置
}
4.查找子串所有出現(xiàn)的位置感耙,并且替換子串為其他子串(find+while循環(huán)+replace)
pos = str.find(astr);
while(pos != string::npos)
{
str.replace(pos, 1, "A");//替換從pos開始的1個(gè)字符為A
pos = str.find(astr);
}
cout<<str<<endl哥艇;
5.查找子串所有出現(xiàn)的位置隙赁,并且刪除子串(find+while循環(huán)+erase)
pos = str.find(somestr);
while(pos != string::npos)
{
str.erase(pos, 5);//刪除從pos開始的5個(gè)字符
pos = str.find(somestr);
}