C++ string find_first_of
时间: 2024-09-27 10:12:58 浏览: 50
`std::string` 类型在 C++ 中有一个成员函数 `find_first_of`,它的作用是在字符串中查找第一个出现指定字符集中任意一个字符的位置。这个函数接受一个字符数组、另一个字符串或者是单个字符作为参数,如果找到了匹配的字符,它会返回该字符首次出现的索引;如果没有找到,那么返回 `string::npos`(表示字符串结束位置之后的一个无效值)。
基本语法如下:
```cpp
size_t find_first_of(const char* str) const;
size_t find_first_of(const string& str) const;
size_t find_first_of(char ch) const;
```
例如:
```cpp
std::string myString = "Hello, World!";
size_t position = myString.find_first_of("Wor"); // 找到 'W' 的位置,结果是4
position = myString.find_first_of("!dl"); // 找到第一个不在 'Wor' 中的字符,结果是8
```
相关问题
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`。
c++中find_first_of()
在 C++ 中,`find_first_of()` 是一个字符串函数,用于查找一个字符串中的任何字符是否出现在另一个字符串中。
函数原型如下:
```c++
size_t find_first_of (const string& str, size_t pos = 0) const noexcept;
size_t find_first_of (const char* s, size_t pos, size_t n) const;
size_t find_first_of (const char* s, size_t pos = 0) const;
size_t find_first_of (char c, size_t pos = 0) const noexcept;
```
其中,第一个参数 `str` 是要查找的字符串;第二个参数 `pos` 是从哪个位置开始查找,默认值为 0。
如果找到了匹配的字符,则函数返回该字符在字符串中的位置,否则返回 `string::npos`。
示例代码:
```c++
#include <iostream>
#include <string>
int main() {
std::string str1 = "Hello World";
std::string str2 = "abcde";
size_t found = str1.find_first_of(str2);
if (found != std::string::npos) {
std::cout << "Found character " << str1[found] << " at position " << found << '\n';
} else {
std::cout << "No match found.\n";
}
return 0;
}
```
输出结果:
```
Found character l at position 2
```
阅读全文