商城首页欢迎来到中国正版软件门户

您的位置:首页 >C++ string查找子串方法详解

C++ string查找子串方法详解

  发布于2025-11-02 阅读(0)

扫一扫,手机访问

find()函数用于查找子串,若找到返回起始索引,否则返回string::npos;支持从指定位置开始查找,可查找子串或字符。

c++中string怎么查找子串_string字符串查找方法

在C++中,string 类提供了多种查找子串的方法,最常用的是 find() 函数。通过它可以在一个字符串中查找另一个子串或字符的位置,如果找到返回起始索引,否则返回 string::npos

find() 基本用法

find() 是 string 类中最核心的查找函数,支持查找子串、单个字符、C风格字符串等。

常用形式:
  • str.find(substr):从头开始查找子串 substr 的第一次出现位置
  • str.find(substr, pos):从位置 pos 开始向后查找
  • str.find(c):查找字符 c

示例代码:

string str = "Hello world, welcome to C++";
string target = "welcome";
size_t pos = str.find(target);
if (pos != string::npos) {
    cout << "找到子串,位置:" << pos << endl;
} else {
    cout << "未找到子串" << endl;
}

其他查找函数

除了 find(),C++ string 还提供了一些更具体的查找方法,适用于不同场景。

rfind()

从右往左查找子串的最后一次出现位置,即逆向查找。

string str = "ababcabc";
size_t pos = str.rfind("abc"); // 返回 5
find_first_of()

查找参数中任意一个字符首次出现的位置。

string str = "Hello World!";
size_t pos = str.find_first_of("aeiou"); // 找到第一个元音字母 'e',返回 1
find_last_of()

查找参数中任意一个字符最后一次出现的位置。

string str = "Hello World!";
size_t pos = str.find_last_of("o"); // 返回 7
find_first_not_of()

查找第一个不在指定字符集中的字符。

string str = " abc123";
size_t pos = str.find_first_not_of(" "); // 跳过空格,返回 3('a'的位置)
find_last_not_of()

查找最后一个不在指定字符集中的字符。

string str = "abc123!!!";
size_t pos = str.find_last_not_of("!"); // 返回 6('3'的位置)

查找结果判断

所有查找函数都返回 size_t 类型的位置值。如果未找到,返回常量 string::npos(通常为 -1 转换为无符号数)。

正确判断方式: if (pos != string::npos) {
    // 找到了
} else {
    // 没找到
}

注意不要直接和 -1 比较,因为 size_t 是无符号类型,容易出错。

基本上就这些常见用法。掌握 find 及其变体,就能高效处理大多数字符串查找需求。
本文转载于:互联网 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注