返回介绍

F.5 字符串搜索

发布于 2024-10-08 23:14:16 字数 3829 浏览 0 评论 0 收藏 0

string 类提供了 6 种搜索函数,其中每个函数都有 4 个原型。下面简要地介绍它们。

F.5.1 find( ) 系列

在 C++11 中,find( ) 的原型如下:

第一个返回 str 在调用对象中第一次出现时的起始位置。搜索从 pos 开始,如果没有找到子字符串,将返回 npos。

下面的代码在一个字符串中查找字符串“hat”的位置:

由于第二条搜索语句从位置 2 开始(That 中的 a),因此它找到的第一个 hat 位于字符串尾部。要测试是否失败,可使用 string::npos 值:

第二个方法完成同样的工作,但它使用字符数组而不是 string 对象作为子字符串:

第三个方法完成相同的工作,但它只使用字符串 s 的前 n 个字符。这与使用 basic_string(const charT * s,size_type n)构造函数,然后将得到的对象用作第一种格式的 find( ) 的 string 参数的效果完全相同。例如,下面的代码搜索子字符串“fun”:

第四个方法的功能与第一个相同,但它使用一个字符而不是 string 对象作为子字符串:

F.5.2 rfind( ) 系列

rfind( ) 方法的原型如下:

这些方法与相应 find( ) 方法的工作方式相似,但它们搜索字符串最后一次出现的位置,该位置位于 pos 之前(包括 pos)。如果没有找到,该方法将返回 npos。

下面的代码从字符串末尾开始查找子字符串“hat”的位置:

F.5.3 find_first_of( ) 系列

find_first_of( ) 方法的原型如下:

这些方法与对应 find( ) 方法的工作方式相似,但它们不是搜索整个子字符串,而是搜索子字符串中的字符首次出现的位置。

在 longer 中,首次出现的 fluke 中的字符是 funny 中的 f,而首次出现的 fat 中的字符是 That 中的 a。

F.5.4 find_last_of( ) 系列

find_last_of( ) 方法的原型如下:

这些方法与对应 rfind( ) 方法的工作方式相似,但它们不是搜索整个子字符串,而是搜索子字符串中的字符出现的最后位置。

下面的代码在一个字符串中查找字符串“hat”和“any”中字母最后出现的位置:

在 longer 中,最后出现的 hat 中的字符是 hat 中的 t,而最后出现的 any 中的字符是 hat 中的 a。

F.5.5 find_first_not_of( ) 系列

find_first_not_of( ) 方法的原型如下:

这些方法与对应 find_first_of( ) 方法的工作方式相似,但它们搜索第一个不位于子字符串中的字符。

下面的代码在字符串中查找第一个没有出现在“This”和“Thatch”中的字母:

在 longer 中,That 中的 a 是第一个在 This 中没有出现的字符,而字符串 longer 中的第一个空格是第一个没有在 Thatch 中出现的字符。

F.5.6 find_last_not_of( ) 系列

find_last_not_of( ) 方法的原型如下:

这些方法与对应 find_last_of( ) 方法的工作方式相似,但它们搜索的是最后一个没有在子字符串中出现的字符。

下面的代码在字符串中查找最后一个没有出现在“That.”中的字符:

在 longer 中,最后的空格是最后一个没有出现在 shorter 中的字符,而 longer 字符串中的 f 是搜索到位置 10 时,最后一个没有出现在 shorter 中的字符。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文