📜  C++ string.find_last_of()函数(1)

📅  最后修改于: 2023-12-03 15:29:51.533000             🧑  作者: Mango

C++中的string.find_last_of()函数介绍

概述

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()要慢。