新闻中心

C++ string查找子串_C++ string find函数用法

2025-11-26
浏览次数:
返回列表
std::string的find函数用于查找子串或字符,找到返回下标,否则返回npos;可指定起始位置进行多次查找;还提供rfind、find_first_of等变体函数实现不同查找需求。

c++ string查找子串_c++ string find函数用法

在C++中,std::string 提供了 find() 成员函数,用于查找子串或字符在字符串中的位置。如果找到,返回首次出现的下标;如果未找到,返回 std::string::npos

find 函数基本用法

函数原型如下:

size_t find(const string& str, size_t pos = 0) const;
size_t find(const char* s, size_t pos = 0) const;
size_t find(char c, size_t pos = 0) const;

参数说明:

  • str / s / c:要查找的子串、C风格字符串或单个字符
  • pos:从哪个位置开始查找,默认从0开始

返回值:

  • 找到时返回匹配位置的索引(从0开始)
  • 未找到时返回 std::string::npos(通常为 -1 转换为无符号整数)

查找子串示例

以下代码演示如何使用 find 查找子串:

#include iostream>
#include
using namespace std;

int main() {
    string text = "Hello world, welcome to C++ programming";
    string pattern = "world";

    size_t pos = text.find(pattern);
    if (pos != string::npos) {
        cout     } else {
        cout     }
    return 0;
}

输出:

美图云修 美图云修

商业级AI影像处理工具

美图云修 50 查看详情 美图云修 Found 'world' at position: 6

从指定位置开始查找

可以设置起始查找位置,用于查找多个匹配项:

size_t pos = 0;
while ((pos = text.find("o", pos)) != string::npos) {
    cout     ++pos; // 移动一位,避免重复匹配同一位置
}

这段代码会找出所有字符 'o' 的位置。

其他相关的查找函数

除了 find,string 还提供几个类似函数:

  • rfind():从后往前查找,返回最后一次出现的位置
  • find_first_of():查找参数中任意一个字符首次出现的位置
  • find_last_of():查找参数中任意字符最后一次出现的位置
  • find_first_not_of()find_last_not_of():查找不在指定字符集中的字符

例如:

string s = "apple,banana,cherry";
size_t p = s.find_first_of(","); // 找第一个逗号,返回5

基本上就这些。使用 find 时注意检查返回值是否为 npos,避免误用无效下标访问字符串。

以上就是C++ string查找子串_C++ string find函数用法的详细内容,更多请关注其它相关文章!


# 多个  # 关键词快速排名要钱吗  # 青龙微型网站建设操作步骤  # 铜川做网站优化  # 博山网站关键词优化排名  # 刷神马关键词排名  # 常用网站建设知识  # 酒店seo推广  # seo网站优化软件免费  # seo的自学网站  # 教育seo广告  # 相关文章  # 这段  # app  # 第一个  # 几个  # 返回值  # 操作方法  # 首次  # 如何使用  # 美图  # stream  # apple  # ios  # c++  # ai 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: QQ邮箱网页版入口页面 QQ邮箱在线登录入口官网  海棠账号登录入口_登录海棠账户同步阅读记录  Windows电脑怎么截图最方便_系统自带截图工具的5种神仙用法【技巧】  4399体育竞技小游戏_4399小游戏赛事入口  优化 Python 函数中的条件逻辑:解决 if-else 嵌套与参数选择问题  小红书怎么解除第三方平台绑定_小红书多平台登录解绑方法介绍  深入理解Go语言中Map值与方法接收器的交互:为什么需要临时变量  提升Kafka消费者健壮性:会话超时处理与消息处理语义  MinIO大规模对象列表性能瓶颈深度解析与外部元数据管理策略  Win11怎么安装Linux子系统 Win11 WSL2安装Ubuntu及环境配置指南  拼多多赚钱渠道_拼多多收益来源  HTML元素状态管理:根据DIV内容动态启用/禁用按钮  红果短剧网页版官网入口 官方最新网址发布  Archive of Our Own官网直达 AO3最新可用地址一览  ArchiveofOurOwn小说阅读-ArchiveofOurOwn同人作品访问链接  可靠CSGO开箱平台解析 CSGO开箱网合集  C++如何检测键盘输入_C++ _kbhit与_getch函数非阻塞输入  qq浏览器如何查看和导出已保存的密码 qq浏览器密码管理器数据备份教程  深入理解J*a编译器的兼容性选项:从-source到--release  Go语言JSON解析深度指南:动态访问与结构体映射实践  铁路12306卧铺选择攻略 铁路12306下铺座位预定技巧  Python多版本共存与虚拟环境管理深度指南  sublime怎么设置启动时打开的窗口_sublime会话管理与热退出  抖音怎么赚钱_抖音创作者变现方法与途径指南  mysql备份恢复性能优化_mysql备份恢复性能优化方法  CSS响应式网页如何实现主次模块比例自适应_flex-grow与flex-shrink调整  优化Log4j2控制台输出性能:解决异步日志瓶颈  zookeeper 都有哪些功能?  微信群消息显示延迟如何解决 微信群消息刷新优化方法  写好的html代码怎么运行出来_运行写好的html代码方法【教程】  圆通快递查询实时追踪 圆通物流包裹状态快速查看  深入理解Google Cloud Datastore查询:祖先路径与数据一致性  如何将HTML表格多行数据保存到Google Sheets  PHP 枚举:根据字符串获取枚举案例的策略与实现  Golang如何实现微服务鉴权与权限控制_Golang微服务鉴权与权限管理实践  Win11 BitLocker密码忘了怎么办 Win11找回BitLocker恢复密钥方法【解决】  在Go Martini框架中高效服务动态生成图像的实践指南  Win10系统怎么查看已安装更新_Win10卸载有问题的更新补丁  Golang如何优化内存分配与垃圾回收_Golang内存管理与GC优化实践  C++如何比较两个字符串_C++ string compare函数与操作符对比  使用CSS更改登录屏幕输入框中PNG图标颜色的策略与局限性  sublime如何处理大型CSV文件的列对齐_sublime高级表格编辑插件指南  火锅吃太多会怎样 火锅吃太多会上火吗  cad如何更改注释性对象的比例_cad注释性比例调整方法  黑鲨3Pro怎样在相册开漫画风滤镜_iPhone黑鲨3Pro相册开漫画风滤镜【趣味滤镜】  J*aScript中安全有效地处理localStorage字符串数据  漫蛙漫画网页端入口 漫蛙2官方正版漫画站点  夸克AO3官网入口_AO3镜像网站2025推荐  马斯克:Optimus 人形机器人复数形式为 Optimi  PHP URL参数传递与500错误调试指南 

搜索