find_first_of
时间: 2023-07-12 12:58:13 浏览: 105
`find_first_of` 是 C++ 中 `std::string` 类的成员函数之一,用于在字符串中查找第一个匹配指定字符集中任意一个字符的位置。
该函数有两个重载版本:
1. `size_t find_first_of(const char* str, size_t pos = 0) const;`
2. `size_t find_first_of(const string& str, size_t pos = 0) const;`
第一个版本接受一个 C 风格字符串 `str` 作为参数,第二个版本接受一个 `std::string` 对象 `str` 作为参数,两个版本的第二个参数 `pos` 都是可选的,表示从字符串的哪个位置开始查找,默认值为 0。
这个函数会在字符串中从 `pos` 位置开始往后查找,找到第一个匹配指定字符集中任意一个字符的位置并返回该位置。如果字符串中没有匹配的字符,则返回 `string::npos`。
例如,对于字符串 `"hello, world!"`,调用 `find_first_of("ow")` 会返回 4,表示该字符串中第一个匹配字符集 `"ow"` 中任意一个字符的位置是在第 4 个字符处,也就是字符 `'o'`。
相关问题
find_first_of和find_last_of及相关函数并举例
除了 `find_first_of`,`std::string` 类中还有一些其他的查找函数,它们的作用都是在字符串中查找指定字符或字符集的位置。下面是几个常用的查找函数及其功能:
1. `find(char ch, size_t pos = 0) const`:在字符串中查找字符 `ch` 的位置,从 `pos` 位置开始查找,默认值为 0。
```cpp
std::string s = "hello, world!";
size_t pos = s.find('o'); // 返回 4
```
2. `rfind(char ch, size_t pos = npos) const`:在字符串中查找字符 `ch` 的位置,从 `pos` 位置往前查找,`npos` 表示从字符串的末尾开始查找。
```cpp
std::string s = "hello, world!";
size_t pos = s.rfind('o'); // 返回 8
```
3. `find_first_of(const char* str, size_t pos = 0) const`:在字符串中查找第一个匹配指定字符集中任意一个字符的位置。
```cpp
std::string s = "hello, world!";
size_t pos = s.find_first_of("ow"); // 返回 4
```
4. `find_last_of(const char* str, size_t pos = npos) const`:在字符串中查找最后一个匹配指定字符集中任意一个字符的位置。
```cpp
std::string s = "hello, world!";
size_t pos = s.find_last_of("ow"); // 返回 9
```
5. `find_first_not_of(const char* str, size_t pos = 0) const`:在字符串中查找第一个不匹配指定字符集中任意一个字符的位置。
```cpp
std::string s = "hello, world!";
size_t pos = s.find_first_not_of("helo, "); // 返回 5
```
6. `find_last_not_of(const char* str, size_t pos = npos) const`:在字符串中查找最后一个不匹配指定字符集中任意一个字符的位置。
```cpp
std::string s = "hello, world!";
size_t pos = s.find_last_not_of("dlrow!"); // 返回 10
```
C++ 使用find_first_of 和find_last_of的代码例子
下面是使用 `find_first_of` 和 `find_last_of` 的代码示例:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str[] = "hello world";
char vowels[] = "aeiou";
char consonants[] = "bcdfghjklmnpqrstvwxyz";
// 使用 find_first_of 查找第一个元音字母
char* vowel_pos = strpbrk(str, vowels);
if (vowel_pos != NULL) {
printf("第一个元音字母是 %c\n", *vowel_pos);
}
// 使用 find_last_of 查找最后一个辅音字母
char* consonant_pos = strpbrk(str, consonants);
while (consonant_pos != NULL) {
char* next_consonant_pos = strpbrk(consonant_pos + 1, consonants);
if (next_consonant_pos == NULL) {
printf("最后一个辅音字母是 %c\n", *consonant_pos);
break;
}
consonant_pos = next_consonant_pos;
}
return 0;
}
```
在上面的代码中,我们使用 `strpbrk` 函数来查找字符串中的元音字母和辅音字母。`strpbrk` 函数在 C 标准库中定义,它的原型如下:
```c
char* strpbrk(const char* str1, const char* str2);
```
`str1` 是要查找的字符串,`str2` 是要在 `str1` 中查找的字符集合。`strpbrk` 函数返回指向 `str1` 中第一个出现在 `str2` 中的字符的指针,如果没有找到,则返回 `NULL`。
阅读全文