函数功能
查找一定范围内元素的个数。
查找[first,last)范围内,与toval等价的第一个元素,返回一个迭代器。如果没有这个元素,将返回last。
(Returns an iterator to the first element in the range [first,last) that compares equal toval. If no such element is found, the function returnslast.)
Excel中的find函数
使用语法
FIND(find_text,within_text,start_num)
Find_text是要查找的字符串。
Within_text是包含要查找关键字的单元格。就是说要在这个单元格内查找关键字
Start_num指定开始进行查找的字符数。比如Start_num为1,则从单元格内第一个字符开始查找关键字。如果忽略start_num,则假设其为1。
注意
使用start_num可跳过指定数目的字符。例如,假定使用文本字符串“AYF0093.YoungMensApparel”,如果要查找文本字符串中说明部分的第一个“Y”的编号,则可将start_num设置为8,这样就不会查找文本的序列号部分。FIND将从第8个字符开始查找,而在下一个字符处即可找到find_text,于是返回编号9。FIND总是从within_text的起始处返回字符编号,如果start_num大于1,也会对跳过的字符进行计数。
如果find_text是空文本(),则FIND则会返回数值1。
Find_text中不能包含通配符。
如果within_text中没有find_text,则FIND返回错误值#VALUE!。
如果start_num不大于0,则FIND返回错误值#VALUE!。
如果start_num大于within_text的长度,则FIND返回错误值#VALUE!。
应用示例
A2=“广东省东莞市东城区…”,A3=“黑龙江省哈尔滨市…”;对含有不同地方的数据,利用“Find”函数,非常简单地确定“省”出现的位置。
详细解释
公式“=FIND("省",A2)”中,“省”表示要查找的文本为“省”,(实际使用中,也可以很长的一串字符)。要找查找的对象是A2单元格的内容“广东省东莞市东城区…”,因为没有指定起始位置,所以系统从第一位开始。返回的“3”,表示“省“字在第三位。
而公式“=FIND("省",A3)”中,“黑龙江省哈尔滨市…”则返回4。
注:FIND函数,第一位查找内容,如果是文本的话,必须添加英语输入法下的双引号,否则函数无法计算。
与Find类似,Search函数也有相同的功能。它们的区别是,Find区分大小写,而Search不分大小写(当被查找的文本为英文时)。
另外,在Excel中,对文本进行处理的很多函数都提供了一个特别用来处理双字节字符(如中文,日文)的函数,一般是在原函数后加“B”,如FIND,就有一个FINDB。LEFT,相对应的就是LEFTB等。其实,我们在实际应用中,使用不带“B”的函数就足够了。如果你想使用带“B”的函数,则要特别注意,尤其是在组合运用函数时,其中一个函数使用带“B”的形式,则其它有带“B”形式的函数,全部都要使用其带“B”的形式,否则结果极可能是错的。
C++
泛型算法的 find
在非string类型的容器里,可以直接找出所对应的元素.find函数需要几个参数:迭代器,下标值,所要找的元素。
| 12 | vectora;find(a.begin(),a.end(),1); |
这句话就表示从a的头开始一直到尾,找到第一个值为1的元素,返回的是一个指向该元素的迭代器。

find函数[Excel函数]
find在string容器中的用途
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”相等的字符串的首地址。
find与findb
find在一个文字串中寻找另一个文字串.并返回find_text首次出现时字符的位置。用户也可以使用search来在—个文字串中寻找另一个,但与search不同,find区分大小写,并且不允许通配符。
findb在一个文字串中寻找另一个文字串,并返回find_text首次出现时字符的位置。此函数与find一样,唯一不同的是find视双字节为1,而findb视双字节为2。如果star_num指向双字节字符串的第二字节,则由下一字节开始寻找。用户也可以使用searchb在一个文字串中寻找另一个, 但与searchb不同,findb区分大小写,并且不使用通配符。
函数原型编辑 语音
| 12345678910111213141516171819 | templateInputIteratorfind(InputIteratorfirst,InputIteratorlast,constT&val); |
输入参数
first, last
输入查询序列的开始和结束位置,注意:这两个参数为迭代器。
val
要查询的值
返回值
返回查询结果的迭代器
实例
| 1234567891011121314151617181920212223242526272829303132333435363738 | #include#include#includeusingnamespacestd;intmain(){//为vecIntegers添加数据vectorvecIntegers;for(intnNum=0;nNum<10;++nNum){vecIntegers.push_back(nNum);}//打印数据vector::const_iteratoriElementLocator;for(iElementLocator=vecIntegers.begin();iElementLocator!=vecIntegers.end();++iElementLocator){cout<<*iElementLocator<<'';}cout<::iteratoriElementFound;iElementFound=find(vecIntegers.begin(),vecIntegers.end(),3);if(iElementFound!=vecIntegers.end())//如果找到结果{cout<<*iElementFound< |
运行结果