字符串查找函数 find()函数
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; }