C++string.find_last_of
时间: 2024-11-06 11:18:41 浏览: 19
C++ `std::string` 类型有一个成员函数叫做 `find_last_of()`,它的作用是在给定字符串中查找原始字符串中最后一个出现的指定字符或一组字符。这个函数返回的是找到的第一个匹配字符的索引位置,如果找不到匹配的字符,则返回 `npos`(通常表示字符串长度)。
函数原型一般如下:
```cpp
size_t find_last_of(const string& str) const;
size_t find_last_of(char c) const;
size_t find_last_of(char c, size_t pos = npos) const;
```
其中:
- 第一个版本接受一个字符串作为参数,并在其中查找所有字符直到找到最后一个。
- 第二个版本接受单个字符 `c`,只查找该字符。
- 第三个版本是在从指定位置 `pos` 开始查找,如果省略 `pos` 参数,默认从字符串末尾开始查找。
例如:
```cpp
std::string str = "Hello, World!";
size_t index = str.find_last_of(", "); // 返回12,因为逗号和空格分别是倒数第二个和最后一个字符
```
相关问题
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`。
Find_last_of
`find_last_of` 是一个字符串成员函数,可以在字符串中搜索给定字符集中的任何一个字符,并返回最后一个匹配字符的位置。如果未找到匹配字符,则返回 `std::string::npos`。
以下是示例代码:
```c++
#include <iostream>
#include <string>
int main() {
std::string str = "Hello world!";
char ch = 'o';
size_t pos = str.find_last_of(ch);
if (pos != std::string::npos) {
std::cout << "The last position of '" << ch << "' in \"" << str << "\" is " << pos << std::endl;
} else {
std::cout << "No match found for '" << ch << "' in \"" << str << "\"" << std::endl;
}
return 0;
}
```
输出:
```
The last position of 'o' in "Hello world!" is 7
```
阅读全文