新手守护
这题要用到find函数
说到find函数,先介绍一下它的用法:
泛型算法的 find
在非string类型的容器里,可以直接找出所对应的元素.find函数需要几个参数:迭代器,下标值,所要找的元素
vector<int> a;
find(a.begin(),a.end(),1);
这句话就表示从a的头开始一直到尾,找到第一个值为1的元素,返回的是一个指向该元素的迭代器。
find在string容器中用途比较广
find_first_of,find_last_of,find_not_first_of,find_not_last_of等等
在string类型中,需要的参数也有迭代器,下标和要找的字符串,可以查找单个的字符。因为最后一个参数是const char & _Val(头文件algorithm的定义)
string a;find(a.begin(),a.end(),'a')这句话就是说,在a中找到第一个存在子串与'a'子串相等的字符串的首地址。返回指向该字符串首地址的迭代器(下一次迭代将会接着上一次的迭代,这样很容易做出一个计算字符串中某个字符的出现次数,如右图所示)。
find_last_of则是找到最后一个,
find_not_first_of是找出第一个不与"asd"相等的字符串的首地址
然后,这道题比较水:
认真看!!!!!!!!!!!!!!!!!!!!!!!!!!!1
char a[80];
char b[80];
char *p = a;//辅助变量p(指针)
int count = 0;//用来记录子串出现的次数
printf("请输入主字符串:");
gets(a);
printf("请输入要查找的子串:");
gets(b);
while((p = strstr(p,b)) != NULL)
{
count ++;
p++;
}
printf("子串出现的次数为%d次\n",count);
我没用find,我使用程序模拟find函数,你可以参考一下,切记不要抄袭!
你自己用find函数写一遍吧!