📅  最后修改于: 2023-12-03 15:29:51.533000             🧑  作者: Mango
string.find_last_of()
函数是C++中string类的成员函数之一,用于查找字符串中最后一个与指定字符集中任一字符匹配的字符,并返回其位置。该函数的返回值为匹配到的字符下标,如果没有匹配到则返回string::npos
。
函数定义如下:
size_t find_last_of(const string& str, size_t pos = string::npos) const noexcept;
size_t find_last_of(const char* s, size_t pos = string::npos) const noexcept;
size_t find_last_of(const char* s, size_t pos, size_t n) const noexcept;
size_t find_last_of(char c, size_t pos = string::npos) const noexcept;
str
:要搜索的字符串,可以是另一个string对象的引用。s
:要搜索的字符串的字符数组表示。pos
:绝对或相对搜索开始位置的下标值,默认值为string::npos
,表示从字符串末尾开始搜索。n
:要搜索的字符数组的字符数。c
:要搜索的单个字符。如果找到了一个匹配字符,则返回该字符在字符串中的位置。否则,返回string::npos
。
#include <iostream>
#include <string>
using namespace std;
int main() {
string str("abcde");
char c = 'c';
// 查找第一个与字符集中任一字符匹配的字符
size_t idx = str.find_last_of(c);
if (idx != string::npos) {
cout << "字符 " << c << " 的最后一个出现位置为 " << idx << endl;
} else {
cout << "未找到字符 " << c << endl;
}
// 查找字符集中的任意字符
string chars("xyz");
idx = str.find_last_of(chars);
if (idx != string::npos) {
cout << "字符集中任一字符的最后一个出现位置为 " << idx << endl;
} else {
cout << "未找到字符集中的任一字符" << endl;
}
return 0;
}
输出结果:
字符 c 的最后一个出现位置为 2
字符集中任一字符的最后一个出现位置为 2
string::npos
是一个无符号整数常量,用于表示string类的函数结果不存在或未找到。string::npos
的值通常为18446744073709551615
(或可译为“unsigned long long的最大值”),因此避免无意间将其与有符号整数相比较。string.find_first_of()
要慢。