今天看代码,发现对STL中find函数掌握还是有点少,现在总结⼀下find函数的⽤法。
真开心网
在⾮string类型的容器⾥,可以直接出所对应的元素。find函数需要⼏个参数:迭代器、下标志、所要的元素。
例如:
vector<int> a;
施雪华find(a.begin(),a.end(),1);
这句话就表⽰从a的头开始⼀直到尾,到第⼀个值为1的元素,返回的是⼀个指向该元素的迭代器。
find函数⼀般在string中使⽤较⼴,find函数有⼀系列的函数,今天简单总结⼀下:
1.find()
#include <string>
#include <iostream>
上海航天冰箱
using namespace std;
int main()
{
string str1("i am a student");
string str2("student");
string::size_type pos = str1.find(str2); //在字符串str1中寻字符串str2
if (pos == str1.npos) //对于字符串str1中没有该字符串str2的情况做出处理anit
{
cout << "没有到str2" << endl;
return 0;
前列腺素e2}
cout << "Found str2 at str1: " << pos << endl; //打印字符串str2在str1中开始的位置
cout << "Element:" << str2 << endl;
return 0;
}
若将str1改为“i am a student student”,那么结果会发⽣改变吗?
我们发现答案和第⼀次运⾏的结果是⼀致的,因此find()只返回第⼀次出现的⽬标字符串。
(2)find(string str, int pos)
如果find()函数中除了有被寻的字符串,还有⼀位整型数,表⽰从改位置开始遍历被搜索的字符串,已到被寻的字符串。将上⾯的代码简单的修改⼀下
现在从第⼋位开始遍历str1,有上⾯的运⾏结果我们应该知道现在应该不到str2,运⾏结果:
2.find_first_of()
find_first_of()表⽰查字符串的某个字符最先出现的位置,find_first_of()不是全匹配,即它不是必须要查的字符串在被查的字符串中全部出现,⽽是出现个别字符即可。
我重新举⼀个例⼦:
#include <string>
#include <iostream>
using namespace std;
int main() {
string numerics("0123456789");
string name("r2d2");
string::size_type pos = name.find_first_of(numerics);
if (pos == name.npos)
{
return 0;
}
cout << "Found numercis at name: " << pos << endl;
cout << "Element:" << name[pos] << endl;
}
狗电影网站
可以看出,该函数是将被查的字符串和查的字符串中第⼀个重复的字符的下标返回回来。
3.find_last_of()
find_last_of()函数与find_first_of()功能差不多,只不过find_first_of()是从字符串的前⾯往后⾯搜索,⽽find_last_of()是从字符串的后⾯往前⾯搜索。
4.rfind()
rfind()函数是反向查字符串,即到最后⼀个与⼦串匹配的位置
5.find_first_not_of()
find_first_not_of()函数是到第⼀个不与⼦串匹配的位置