find函数提供了一种对数组、STL容器进行查找的方法。

中文名

find函数

外文名

foundion

语法

find_text

使用地方

excel

类别

计算机函数

领域

计算机学

语种

C++

头文件

#include \u003calgorithm>

函数功能

查找一定范围内元素的个数。

查找[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函数需要几个参数:迭代器,下标值,所要找的元素。

12vectora;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区分大小写,并且不使用通配符。

函数原型

编辑 语音

12345678910111213141516171819templateInputIteratorfind(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<

运行结果

1201234567893