C++ string查找子串方法详解
作者:RiverSoul
时间:2025-11-02
浏览:0
find()函数用于查找子串,若找到返回起始索引,否则返回string::npos;支持从指定位置开始查找,可查找子串或字符。
find()函数用于查找子串,若找到返回起始索引,否则返回string::npos;支持从指定位置开始查找,可查找子串或字符。

在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 及其变体,就能高效处理大多数字符串查找需求。
作者最新文章
微软推出Project Zenith:面向Windows 11开发者的AI硬件加速方案
2026-09-08 18:15
打破流量垄断,让平台经济释放普惠红利
2026-09-08 18:07
Arm AGI CPU详解:136核Neoverse V3,3nm双芯粒架构与AI数据中心部署
2026-09-08 17:18
Windows安装Docker教程:启用WSL2并运行第一个容器验证
2026-09-04 09:26
PDF转Word操作指南:在线与本地转换方法及格式检查
2026-09-03 16:03
上一篇:
Win7系统自带录像功能使用教程
热门文章
更多
精品专题
更多
Mac软件
更多
WINDOWS
更多


































