find()函数可以帮助你在两个字符串之间,查找很多他们的关系。。。
#include<iostream>
#include<string>
using namespace std;
int main()
{
string s,s2;
int n;
cin>>n;
while(n--)
{
cin>>s>>s2;
string flag;
int position = s.find(s2);
if (position != s.npos)
cout << "position is : " << position << endl;
else
cout << "Not found the flag" + flag;
}
return 0;
}
/查找s2在s中的第一个位置
#include<iostream>
#include<string>
using namespace std;
int main()
{
string s,s2;
int n;
cin>>n;
while(n--)
{
cin>>s>>s2;
string flag = s2;
int position = s.find_first_of(flag);
cout << "s.find_first_of(flag) is : " << position << endl;
}
return 0;
}
#include<iostream>
#include<string>
using namespace std;
int main()
{
string s,s2;
int n,m;
cin>>n;
while(n--)
{
cin>>s>>s2;
cin>>m;
int position=s.find(s2,m);//在s中从第n的位置开始查找第一个s2的位置
cout<<"s.find(s2,m) is : "<<position<<endl;
}
return 0;
}
#include<iostream>
#include<string>
using namespace std;
int main()
{
string s,s2;
int n;
cin>>n;
while(n--)
{
cin>>s>>s2;
string flag=s2;
int position=0;
int i=1;
while( (position=s.find_first_of(flag,position) )!=string::npos )//在s中查找所有s2的位置并依次输出
{
//position=s.find_first_of(flag,position);
cout<<"position "<<i<<" : "<<position<<endl;
position++;
i++;
}
}
return 0;
}
//在s中从最后一位开始查找s2的第一个位置
#include<iostream>
#include<string>
using namespace std;
int main()
{
string s,s2;
int n;
cin>>n;
while(n--)
{
cin>>s>>s2;
string flag=s2;
int position=0;
position=s.rfind (flag);
cout<<"s.rfind (flag) :"<<position<<endl;
}
return 0;
}*/
在以上的例子中,我们可以熟练掌握一些题型。
http://acm.nyist.net/JudgeOnline/problem.php?pid=5
代码:
#include<iostream>
#include<string>
using namespace std;
int main()
{
string s1,s2;
int n;
cin>>n;
while(n--)
{
cin>>s1>>s2;
unsigned int m=s2.find(s1,0);
int num=0;
while(m!=string::npos)
{
num++;
m=s2.find(s1,m+1);
}
cout<<num<<endl;
}
return 0;
}