这里我只提供一份代码,该代码包含了基本的用法,我会附上运行结果。大家可以进自测试。
/************************************************************************* > File Name: 1_find.cpp > Author: > Mail: > Created Time: 2020年10月20日 星期二 05时57分33秒 ************************************************************************/ #include<iostream> #include <cstdio> #include <cstring> using namespace std; int main() { string s("1a2cbb3h4v4h5vfhajk34hgbva43hgvhjjhasd4345vdf"); string flag; string :: size_type position; //(1)find返回是字母在母串中的位置(下标记录)/ position = s.find("jk"); if(position = s.find("jk")) { printf("position is %ld\n", position);//15 } else { printf("Not find\n"); } //(2)返回子串出现在母串中首次出现的位置,和最后一次出现的 位置 flag = 'c'; position = s.find_first_of(flag); printf("c first is %ld\n", position); //3 position = s.find_last_of(flag); printf("c last is %ld\n", position); //24 //(3)查找某一给定位置后的子串的位置 position = s.find("b",7); cout << "从下标5开始,查找字符串b,返回b在s中的下标为:"<<position<<endl; //(4)查找所有子串在母串中出现的位置 flag = 'a'; position = 0; int i = 1; while( (position = s.find(flag, position)) != string::npos){ cout << "a of str position "<< i << ":"<<position << endl; position++; i++; } //(5)反向查找子串在母串中出现的位置。通常可以,当正向查找与反向查找的位置不相同说明子串的 不唯一 flag = "3"; position = s.rfind(flag); printf("反向查找3位置%ld\n", position);//39 }运行结果如下 下面是一个示例。查找输入字符串中唯一的名字。
/************************************************************************* > File Name: 2_find_name.cpp > Author: > Mail: > Created Time: 2020年10月20日 星期二 06时51分02秒 ************************************************************************/ #include<iostream> #include <vector> #include <string> using namespace std; vector<string> s; int main() { s.push_back("Danni"); s.push_back("sdff"); s.push_back("Slsdf"); s.push_back("duyu"); s.push_back("sdfsdfh"); string a; cin >>a; int res = 0; for(int i = 0;i < 5;i++){ if(a.find(s[i]) != a.npos) { res++; if(a.rfind(s[i]) != a.find(s[i])) { res++; } } } if(res == 1) { cout << "YES"<<endl; } else { cout << "NO"<<endl; } }运行结果如下: