首页 理论教育 C++STL字符串查找函数简介

C++STL字符串查找函数简介

时间:2023-10-25 理论教育 版权反馈
【摘要】:在C语言和C++语言中,可用于实现字符串查找功能的函数非常多。该返回值用于表明字符串中元素的个数或者字符在字符串中的位置。下面分别介绍和字符查找相关的函数。只不过rfind()函数适用于实现逆向查找。若查找失败,则返回npos。与find_first_of()函数所不同的是,该函数的返回值是被搜索字符串的最后1个字符的下标(位置)。图2-11 例2-13的执行效果总结本小节主要讲述C++STL中的字符串查找函数。

C++STL字符串查找函数简介

在C语言和C++语言中,可用于实现字符串查找功能的函数非常多。在STL中,字符串的查找功能可以实现搜索单个字符、搜索子串;可以实现前向搜索、后向搜索;可以分别实现搜索第一个和最后一个满足条件的字符(或子串)实现搜索第一个和最后一个与给定参考值不相等的字符(或子串)。若查找find()函数和其他函数没有搜索到期望的字符(或子串),则返回npos;若搜索成功,则返回搜索到的第1个字符或子串的位置。

提示

npos是一个无符号整数值,初始值为-1。当搜索失败时,npos表示“没有找到(notfound)”或“所有剩余字符”。

值得注意的是,所有查找find()函数的返回值均是size_type类型,即无符号整数类型。该返回值用于表明字符串中元素的个数或者字符在字符串中的位置。

下面分别介绍和字符查找相关的函数。

1.find()函数和rfind()

find()函数的原型主要有以下4种:

978-7-111-51399-5-Chapter02-58.jpg

rfind()函数的原型和find()函数的原型类似,参数情况也类似。只不过rfind()函数适用于实现逆向查找。

find()函数和rfind()函数的使用方法参见例2-11。

例2-11

978-7-111-51399-5-Chapter02-59.jpg

例2-11的执行效果如图2-9所示。

2.find_first_of()函数和find_last_of()函数

find_first_of()函数可实现在源串中搜索某字符串的功能,该函数的返回值是被搜索字符串的第1个字符第1次出现的下标(位置)。若查找失败,则返回npos。

978-7-111-51399-5-Chapter02-60.jpg

图2-9 例2-11的执行效果

find_last_of()函数同样可实现在源串中搜索某字符串的功能。与find_first_of()函数所不同的是,该函数的返回值是被搜索字符串的最后1个字符的下标(位置)。若查找失败,则返回npos。

上述两个函数的原型分别为:

978-7-111-51399-5-Chapter02-61.jpg

978-7-111-51399-5-Chapter02-62.jpg(www.xing528.com)

例2-12详细阐述了find_first_of()函数和find_last_of()函数的使用方法。这两个函数和find()函数及rfind()函数的使用方法相同,具体参数的意义亦相同。

例2-12

978-7-111-51399-5-Chapter02-63.jpg

978-7-111-51399-5-Chapter02-64.jpg

例2-12的执行效果如图2-10所示。

978-7-111-51399-5-Chapter02-65.jpg

图2-10 例2-12的执行效果

3.find_first_not_of()函数和find_last_not_of()函数

find_first_not_of()函数的函数原型为:

978-7-111-51399-5-Chapter02-66.jpg

find_first_not_of()函数可实现在源字符串中搜索与指定字符(串)不相等的第1个字符;find_last_not_of()函数可实现在源字符串中搜索与指定字符(串)不相等的最后1个字符。这两个函数的参数意义和前面几个函数相同,它们的使用方法和前面几个函数也基本相同。详见例2-13。

例2-13

978-7-111-51399-5-Chapter02-67.jpg

978-7-111-51399-5-Chapter02-68.jpg

例2-13的执行效果如图2-11所示。

978-7-111-51399-5-Chapter02-69.jpg

图2-11 例2-13的执行效果

总结

小节主要讲述C++STL中的字符串查找函数。对于所述的6个查找函数,它们的使用形式大致相同,对于每个函数均配备了实例作为参考。请读者能认真对照例题,深刻理解这6个函数的使用方法,仔细体会函数每个参数的意义。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈