21xrx.com
2024-06-03 00:22:38 Monday
登录
文章检索 我的文章 写文章
C++字符串查找
2023-07-09 03:38:20 深夜i     --     --
C++ 字符串 查找 搜索 定位

在C++编程中,字符串是一种常见的数据类型,常用于存储和处理文本信息。但是在实际编程中,我们经常需要查找字符串中特定的字符、子串或模式。C++提供了一些内置的查找函数来满足这些需求,本文将介绍一些常用的字符串查找函数和其应用。

1. find()函数

find()函数是最基本的字符串查找函数,用于在一个字符串中查找第一个匹配的子串,并返回该子串在字符串中的位置。其语法如下:

int find(const string& str, size_t pos = 0) const noexcept; // 查找str出现的第一个位置,从pos开始查找

其中,str是要查找的子串,pos表示从字符串的哪个位置开始查找。

例如,以下代码段查找字符串s中第一个字符‘e’的位置:

string s = "hello world";

int pos = s.find('e');

cout << pos << endl;

输出结果为:

1

表示字符‘e’在字符串s中的位置是1(注:字符串下标从0开始计算)。

2. rfind()函数

rfind()函数与find()函数非常相似,是从字符串的末尾开始查找第一个匹配的子串,并返回其位置。其语法如下:

int rfind(const string& str, size_t pos = npos) const noexcept; // 从pos之前的位置开始查找,查找str出现的第一个位置

其中,str是要查找的子串,pos表示从字符串的哪个位置开始查找。

例如,以下代码段查找字符串s中最后一个字符‘o’的位置:

string s = "hello world";

int pos = s.rfind('o');

cout << pos << endl;

输出结果为:

7

表示字符‘o’在字符串s中最后一次出现的位置是7。

3. find_first_of()函数

find_first_of()函数用于在字符串中查找任意一个字符在另一个字符串中出现的位置,返回第一个匹配的位置。其语法如下:

int find_first_of(const string& str, size_t pos = 0) const noexcept; // 从pos位置开始查找,查找第一个与str中任意字符匹配的位置

其中,str是要匹配的字符集,pos表示从字符串的哪个位置开始查找。

例如,以下代码段查找字符串s中第一个匹配字符集"aeiou"的字符的位置:

string s = "hello world";

int pos = s.find_first_of("aeiou");

cout << pos << endl;

输出结果为:

1

表示字符串s中第一个匹配字符集"aeiou"的字符‘e’的位置是1。

4. find_last_of()函数

find_last_of()函数与find_first_of()函数类似,不同之处是它从字符串的末尾开始查找匹配的字符,并返回最后一个匹配的位置。其语法如下:

int find_last_of(const string& str, size_t pos = npos) const noexcept; // 从pos之前的位置开始查找,查找最后一个与str中任意字符匹配的位置

其中,str是要匹配的字符集,pos表示从字符串的哪个位置开始查找。

例如,以下代码段查找字符串s中最后一个匹配字符集"aeiou"的字符的位置:

string s = "hello world";

int pos = s.find_last_of("aeiou");

cout << pos << endl;

输出结果为:

9

表示字符串s中最后一个匹配字符集"aeiou"的字符‘o’的位置是9。

5. find_first_not_of()函数

find_first_not_of()函数用于在字符串中查找第一个不匹配任意一个字符在另一个字符串中出现的位置,返回第一个不匹配的位置。其语法如下:

int find_first_not_of(const string& str, size_t pos = 0) const noexcept; // 从pos位置开始查找,查找第一个不与str中任意字符匹配的位置

其中,str是要匹配的字符集,pos表示从字符串的哪个位置开始查找。

例如,以下代码段查找字符串s中第一个不匹配字符集"hello"的字符的位置:

string s = "hello world";

int pos = s.find_first_not_of("hello");

cout << pos << endl;

输出结果为:

5

表示字符串s中第一个不匹配字符集"hello"的字符‘ ‘(空格)的位置是5。

6. find_last_not_of()函数

find_last_not_of()函数与find_first_not_of()函数类似,不同之处是它从字符串的末尾开始查找第一个不匹配的字符,并返回最后一个不匹配的位置。其语法如下:

int find_last_not_of(const string& str, size_t pos = npos) const noexcept; // 从pos之前的位置开始查找,查找最后一个不与str中任意字符匹配的位置

其中,str是要匹配的字符集,pos表示从字符串的哪个位置开始查找。

例如,以下代码段查找字符串s中最后一个不匹配字符集"hello"的字符的位置:

string s = "hello world";

int pos = s.find_last_not_of("hello");

cout << pos << endl;

输出结果为:

10

表示字符串s中最后一个不匹配字符集"hello"的字符‘d’的位置是10。

通过以上介绍,我们可以发现C++提供了多个字符串查找函数来满足不同的需求,我们可以根据具体情况来选择使用哪个函数来实现字符串查找的功能。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复