news 2026/4/23 4:31:26

【std::string】find函数

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【std::string】find函数

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

      • 一、核心功能
      • 二、函数原型(常用重载版本)
      • 三、返回值说明
      • 四、使用示例
      • 五、注意事项
      • 六、与其他查找方法的区别

在C++的std::string中,find方法是用于在字符串中查找子串或字符的核心成员函数,其作用是定位目标内容在当前字符串中首次出现的位置。

一、核心功能

find方法会从字符串的指定位置(默认从起始位置,即索引0)开始,搜索目标子串(或字符),并返回其首次出现的起始索引;若未找到,则返回特殊值std::string::npos

二、函数原型(常用重载版本)

std::stringfind方法有多个重载版本,覆盖不同的查找需求,常用的有以下几种:

  1. 查找字符
    从指定位置pos开始,查找单个字符c

    size_tfind(charc,size_t pos=0)const;
  2. 查找std::string子串
    从指定位置pos开始,查找子串s

    size_tfind(conststd::string&s,size_t pos=0)const;
  3. 查找C风格字符串(以\0结尾)
    从指定位置pos开始,查找C字符串s

    size_tfind(constchar*s,size_t pos=0)const;
  4. 查找C风格字符串的前count个字符
    从指定位置pos开始,查找C字符串s的前count个字符:

    size_tfind(constchar*s,size_t pos,size_t count)const;

三、返回值说明

  • 若找到目标,返回目标内容在当前字符串中首次出现的起始索引(索引从0开始)。
  • 若未找到,返回std::string::npos(这是一个静态常量,通常等价于size_t(-1),用于表示“未找到”)。

四、使用示例

以下示例基于字符串str = "hello world, hello cpp"演示find的用法:

#include<iostream>#include<string>intmain(){std::string str="hello world, hello cpp";// 1. 查找字符 'o'(默认从位置0开始)size_t pos1=str.find('o');if(pos1!=std::string::npos){std::cout<<"字符 'o' 首次出现位置:"<<pos1<<"\n";// 输出:4("hello"的第4个索引)}// 2. 查找子串 "hello"(从位置0开始)size_t pos2=str.find("hello");if(pos2!=std::string::npos){std::cout<<"子串 \"hello\" 首次出现位置:"<<pos2<<"\n";// 输出:0}// 3. 从位置6开始查找子串 "hello"(跳过第一个"hello")size_t pos3=str.find("hello",6);if(pos3!=std::string::npos){std::cout<<"从位置6开始,子串 \"hello\" 首次出现位置:"<<pos3<<"\n";// 输出:13}// 4. 查找不存在的子串 "java"size_t pos4=str.find("java");if(pos4==std::string::npos){std::cout<<"子串 \"java\" 未找到\n";// 输出此句}return0;}

五、注意事项

  1. 索引范围pos参数需小于字符串长度(str.size()),否则可能返回npos(未定义行为,建议确保pos有效)。
  2. 区分大小写find是大小写敏感的,例如查找"Hello"和"hello"会被视为不同子串。
  3. 返回值类型:返回值为size_t(无符号整数),若用int接收可能导致负数转换问题,建议直接用size_tauto
  4. npos的判断:必须用== std::string::npos判断是否找到,不能用== -1(尽管值可能相同,但size_t是无符号类型,逻辑上不严谨)。

六、与其他查找方法的区别

std::string还提供了其他查找相关方法,可根据需求选择:

  • rfind:从字符串末尾反向查找(最后一次出现的位置)。
  • find_first_of:查找目标中任意字符首次出现的位置。
  • find_last_of:查找目标中任意字符最后一次出现的位置。

find是最基础的“正向全匹配”查找,是字符串搜索的首选方法。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 12:26:44

YOLO26训练参数详解:batch、epochs、optimizer设置指南

YOLO26训练参数详解&#xff1a;batch、epochs、optimizer设置指南 最新 YOLO26 官方版训练与推理镜像 本镜像基于 YOLO26 官方代码库 构建&#xff0c;预装了完整的深度学习开发环境&#xff0c;集成了训练、推理及评估所需的所有依赖&#xff0c;开箱即用。 1. 镜像环境说…

作者头像 李华
网站建设 2026/4/10 23:41:12

UI.Vision RPA终极指南:从零开始的免费自动化神器

UI.Vision RPA终极指南&#xff1a;从零开始的免费自动化神器 【免费下载链接】RPA UI.Vision: Open-Source RPA Software (formerly Kantu) - Modern Robotic Process Automation with Selenium IDE 项目地址: https://gitcode.com/gh_mirrors/rp/RPA 想要摆脱重复性工…

作者头像 李华
网站建设 2026/4/23 9:54:06

快速部署中文语音合成应用|基于LLaSA和CosyVoice2的Voice Sculptor实战

快速部署中文语音合成应用&#xff5c;基于LLaSA和CosyVoice2的Voice Sculptor实战 1. 引言&#xff1a;指令化语音合成的技术演进 在AIGC浪潮推动下&#xff0c;语音合成技术正从“能说”向“会表达”跃迁。传统TTS系统依赖大量标注数据与固定声学模型&#xff0c;难以满足个…

作者头像 李华
网站建设 2026/4/18 5:15:53

未来AI创作方向:NewBie-image-Exp0.1结构化提示词实战分析

未来AI创作方向&#xff1a;NewBie-image-Exp0.1结构化提示词实战分析 你有没有试过用AI生成动漫图&#xff0c;结果角色脸串了、发色乱变&#xff0c;或者两个人站一起却分不清谁是谁&#xff1f;这几乎是每个用过文生图模型的人都踩过的坑。尤其是当画面里出现多个角色时&am…

作者头像 李华
网站建设 2026/4/23 10:42:26

YOLOE视觉提示实测:语义激活精度提升明显

YOLOE视觉提示实测&#xff1a;语义激活精度提升明显 在开放词汇目标检测领域&#xff0c;模型能否“看懂”用户意图&#xff0c;直接决定了其在真实场景中的可用性。传统的封闭集检测器&#xff08;如YOLOv8&#xff09;虽然速度快&#xff0c;但面对训练集中未出现的类别时束…

作者头像 李华
网站建设 2026/3/20 11:20:08

从零搭建专业翻译服务|利用HY-MT1.5-7B镜像实现高性能互译

从零搭建专业翻译服务&#xff5c;利用HY-MT1.5-7B镜像实现高性能互译 你是否正在寻找一个稳定、高效、支持多语言的专业翻译解决方案&#xff1f;市面上的通用翻译API虽然方便&#xff0c;但在特定领域术语、混合语言场景或格式保留方面常常表现不佳。而今天我们要介绍的 HY-…

作者头像 李华