【C++】STL 容器 - string 字符串操作 ⑤ ( string 字符串查找 | find 函数查找字符串 | rfind 函数查找字符串 )

文章目录

  • 一、string 字符查找 - find 函数查找字符串
    • 1、string 类 find 函数原型说明
    • 2、代码示例 - 字符串查找
    • 3、代码示例 - 统计字符串子串
  • 二、string 字符查找 - rfind 函数查找字符串
    • 1、string 类 rfind 函数原型说明
    • 2、代码示例 - rfind 字符串查找






一、string 字符查找 - find 函数查找字符串



1、string 类 find 函数原型说明


string 类 find 函数查找字符串 : string 类的 find 函数除了可以查找单个字符外 , 还可以查找子字符串 , 如果没有查到就返回 -1 ;

  • 从指定位置开始查找 字符 : 在 string 字符串中 , 从 pos 索引位置 ( 包括该位置索引自身 ) 开始查找字符 c 在当前字符串的位置 , 如果没有查到就返回 -1 ;
int find(char c,int pos=0) const;
  • 从指定位置开始查找 char* 字符串 : 在 string 字符串中 , 从 pos 索引位置 ( 包括该位置索引自身 ) 开始查找 char* 类型字符串 s 在当前字符串的位置 , 如果没有查到就返回 -1 ;
int find(const char *s, int pos=0) const;
  • 从指定位置开始查找 string 字符串 : 在 string 字符串中 , 从 pos 索引位置 ( 包括该位置索引自身 ) 开始查找 string 类型字符串 s 在当前字符串的位置 , 如果没有查到就返回 -1 ;
int find(const string &s, int pos=0) const;

2、代码示例 - 字符串查找


代码示例 :

#include "iostream"
using namespace std;
#include "string"int main() {string s1 = "Tom And Jerry, Hello World, Tom !";// 从 0 位置开始 ( 包括 0 位置 ) , 统计第一次出现 Tom 字符串的位置int index = s1.find("Tom", 0);// index: 0cout << "index: " << index << endl;// 从 4 位置开始 ( 包括 4 位置 ) , 统计第一次出现 Tom 字符串的位置index = s1.find("Tom", 4);// index: 28cout << "index: " << index << endl;// 控制台暂停 , 按任意键继续向后执行system("pause");return 0;
};

执行结果 :

index: 0
index: 28
请按任意键继续. . .

在这里插入图片描述


3、代码示例 - 统计字符串子串


查找 “Tom” 字符串出现的 下标 和 次数 ;

	string s1 = "Tom And Jerry, Hello World, Tom !";

首先 , 查找出第一次下标 , 然后开启循环 ;

	// 1. 先查找出第一次下标int index = s1.find("Tom", 0);

然后 , 设置循环条件 : 如果没有查到到返回 string::npos 也就是 -1 , 如果查找到了 返回结果不等于 string::npos / -1 就一直循环下去 , 直到返回 string::npos / -1 为止 ;

在循环中 , 每次索引自增 3 , 继续查找后续索引, 此处跳过本次查找的字符串 ;

	while (index != string::npos){cout << "出现 Tom 字符串 的索引 index = " << index << endl;// 索引自增, 继续查找后续索引, 此处跳过本次查找的字符串index = index + 3;// 继续 基于新的索引 向后查找index = s1.find("Tom", index);// 每次统计 find 结果不为 -1 , count 就自增 1count++;}

代码示例 :

#include "iostream"
using namespace std;
#include "string"int main() {string s1 = "Tom And Jerry, Hello World, Tom !";//查找 "Tom" 字符串出现的 下标 和 次数// 1. 先查找出第一次下标int index = s1.find("Tom", 0);// 保存出现次数int count = 0;// 2. 设置循环条件 : 如果没有查到到返回 string::npos 也就是 -1//	  如果查找到了 返回结果不等于 string::npos / -1 就一直循环下去//	  直到返回 string::npos / -1 为止while (index != string::npos){cout << "出现 Tom 字符串 的索引 index = " << index << endl;// 索引自增, 继续查找后续索引, 此处跳过本次查找的字符串index = index + 3;// 继续 基于新的索引 向后查找index = s1.find("Tom", index);// 每次统计 find 结果不为 -1 , count 就自增 1count++;}cout << "出现 Tom 字符串 的次数 count = " << count << endl;// 控制台暂停 , 按任意键继续向后执行system("pause");return 0;
};

执行结果 :

出现 Tom 字符串 的索引 index = 0
出现 Tom 字符串 的索引 index = 28
出现 Tom 字符串 的次数 count = 2
请按任意键继续. . .

在这里插入图片描述





二、string 字符查找 - rfind 函数查找字符串



1、string 类 rfind 函数原型说明


string 类 rfind 函数查找字符串 : 在字符串中从 指定位置 开始 从右到左 查找字符 c ; 如果找到 则返回该字符在字符串中的位置 , 返回的位置索引 从0开始计数 ; 如果没有找到返回string::npos / -1 ;

  • 从指定位置开始查找 字符 :string 字符串中 , 从 npos 索引位置 ( 包括该位置索引自身 ) 开始 从右向左 查找字符 c 在当前字符串的位置 , 如果没有查到就返回 -1 ; 如果找到 则返回该字符在字符串中的位置 , 返回的位置索引 从0开始计数 ; 如果没有找到返回string::npos / -1 ;
int rfind(char c, int pos=npos) const;
  • 从指定位置开始查找 char* 字符串 :string 字符串中 , 从 npos 索引位置 ( 包括该位置索引自身 ) 开始 从右向左 查找 char* 类型字符串 s 在当前字符串的位置 , 如果没有查到就返回 -1 ; 如果找到 则返回该字符在字符串中的位置 , 返回的位置索引 从0开始计数 ; 如果没有找到返回string::npos / -1 ;
int rfind(const char *s, int pos=npos) const;
  • 从指定位置开始查找 string 字符串 :string 字符串中 , 从 npos 索引位置 ( 包括该位置索引自身 ) 开始 从右向左 查找 string 类型字符串 s 在当前字符串的位置 , 如果没有查到就返回 -1 ; 如果找到 则返回该字符在字符串中的位置 , 返回的位置索引 从0开始计数 ; 如果没有找到返回string::npos / -1 ;
int rfind(const string &s, int pos=npos) const;

2、代码示例 - rfind 字符串查找


代码示例 :

#include "iostream"
using namespace std;
#include "string"int main() {string s1 = "Tom And Jerry, Hello World, Tom !";// 从 0 位置开始 ( 包括 0 位置 ) , 统计第一次出现 Tom 字符串的位置int index = s1.rfind("Tom", 0);// index: 0cout << "index: " << index << endl;// 从 末尾 位置开始 ( 包括 末尾 位置 ) , 统计第一次出现 Tom 字符串的位置index = s1.rfind("Tom", s1.length() - 1);// index: 28cout << "index: " << index << endl;// 控制台暂停 , 按任意键继续向后执行system("pause");return 0;
};

执行结果 :

index: 0
index: 28
请按任意键继续. . .

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/228033.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

华为OD机试真题-英文输入法-2023年OD统一考试(C卷)

题目描述: 主管期望你来实现英文输入法单词联想功能。需求如下: 依据用户输入的单词前缀,从已输入的英文语句中联想出用户想输入的单词,按字典序输出联想到的单词序列,如果联想不到,请输出用户输入的单词前缀。 注意: 1. 英文单词联想时,区分大小写 2. 缩略形式…

探索大学专业和硕士专业的广阔领域

目录 大学专业分类 1. 自然科学和数学类专业 2. 工程与技术类专业 3. 医学与卫生类专业 4. 社会科学类专业 5. 人文学科类专业 6. 艺术与设计类专业 硕士专业分类 1. 工程管理与技术管理 2. 商业与管理 3. 计算机科学与信息技术 4. 医学与卫生管理 5. 社会科学与人…

注册与回调

C 再谈谈注册(本质是建立映射)与回调 在之前的博文中&#xff0c; 我们探讨过映射的重要作用&#xff0c; 请直接看&#xff1a;http://blog.csdn.net/stpeace/article/details/39452203, 在那篇文章中&#xff0c; 我们是用STL中的map来做的&#xff0c; map建立的是key-value…

rk3568 RGMII KSZ8795 MAC TO MAC

RK3568与KSZ8795交换机芯片连接&#xff0c;直接MAC TO MAC方式&#xff0c;这样一下就扩展会4路网口&#xff0c;应该场合比较多&#xff0c;移植过程如下&#xff1a; 参考《Rockchip_Developer_Guide_Linux_MAC_TO_MAC_CN.pdf》 《rockchip RGMIImv88e6390 管理型交换机功…

【Spring】之Ioc和Aop快速了解

这里写目录标题 1.Spring框架是什么&#xff1f;简介&#xff1a;总结&#xff1a;Spring框架&#xff0c;可以理解为是一个管理者&#xff1a;管理整个分层架构&#xff08;MVC&#xff09;中的每一个对象&#xff1b;&#xff08;每一个对象称之为bean&#xff09; 2.Spring框…

太空旅行:计算机技术的崭新航程

太空旅行&#xff1a;计算机技术的崭新航程 一、引言 自古以来&#xff0c;人类就对浩渺的宇宙充满了无尽的好奇和渴望。随着科技的飞速发展&#xff0c;太空旅行已经从科幻小说中的构想变为现实。在这个过程中&#xff0c;计算机技术起到了不可或缺的作用。从阿波罗时代的初…

​FL Studio2024最新版本好不好用?有哪些新功能

FL Studio2024版是一款在国内非常受欢迎的多功能音频处理软件&#xff0c;我们可以通过这款软件来对多种不同格式的音频文件来进行编辑处理。而且FL Studio 2024版还为用户们准备了超多的音乐乐器伴奏&#xff0c;我们可以直接一键调取自己需要的音调。 FL Studio 2024版不仅拥…

HarmonyOS4.0从零开始的开发教程15HTTP数据请求

HarmonyOS&#xff08;十三&#xff09;HTTP数据请求 1 概述 日常生活中我们使用应用程序看新闻、发送消息等&#xff0c;都需要连接到互联网&#xff0c;从服务端获取数据。例如&#xff0c;新闻应用可以从新闻服务器中获取最新的热点新闻&#xff0c;从而给用户打造更加丰富…

uniapp上传文件api如何使用

在uni-app中使用上传文件API有以下几个步骤&#xff1a; 创建 <input type"file"> 元素&#xff0c;并监听文件选择事件 <input type"file" change"chooseFile">在 methods 中定义 chooseFile 方法&#xff0c;处理文件选择事件 met…

发起POST请求时同时携带文件和自定义参数

目录 背景 说明 背景 发送请求时需要携带文件&#xff0c;又想携带自定义参数的场景。 说明 需要带文件&#xff0c;则Content-Type已经确定&#xff1a; Content-Type: multipart/form-data" 其次在form中设置自己的参数&#xff1a; -F a1 注意此时-d&#xff08…

MySQL进阶2 - 索引

MySQL进阶1 - 索引 1. 索引概述2. 索引结构2.1 二叉树2.2 B-Tree(多路平衡查找树)2.3 BTree2.4 Hash 3. 索引分类4. 索引语法5. SQL性能分析5.1 SQL执行频率5.2 慢查询日志5.3 profile5.4 explain执行计划5.3.1 EXPLAIN执行计划各字段含义&#xff1a; 6. 索引使…

SpringBoot+FastJson 优雅的过滤 Response Body

Spring 源码系列 1、Spring 学习之扩展点总结之后置处理器&#xff08;一&#xff09; 2、Spring 学习之扩展点总结之后置处理器&#xff08;二&#xff09; 3、Spring 学习之扩展点总结之自定义事件&#xff08;三&#xff09; 4、Spring 学习之扩展点总结之内置事件&#xf…

手把手教你Linux查找Java的安装目录并设置环境变量以及Linux下执行javac未找到命令的保姆级教学

查找Java的安装目录 输入 java -version&#xff0c;查看是否成功安装Java 输入 which java&#xff0c;查看Java的执行路径 输入 ls -lrt /usr/bin/java 输入 ls -lrt /etc/alternatives/java&#xff0c;/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.242.b08-0.el7_7.x86_64 就是J…

自动化测试(终章)webdriver的常用api(2)以及新的开始

目录 多层框架/窗口定位 多层框架的定位 frame是什么&#xff1f; 多层窗口定位 层级定位 使用 XPath 进行层级定位&#xff1a; 使用 CSS 选择器进行层级定位&#xff1a; 下拉框处理 alert、confirm、prompt 的处理 Alert 弹窗&#xff1a; Confirm 弹窗&#xff…

推免那些事

平生第一次搞推免&#xff0c;也是最后一次。错失了一些机会&#xff0c;也有幸获得了一些机会&#xff0c;值得祝庆&#xff0c;也值得反思。 以下记录为个人流水账。 个人背景 我的背景可以算不是非常好了&#xff0c;况且今年211受歧视比较严重。 学校&#xff1a;211&…

IDEA安装插件搜索不到插件的解决方法

解决idea安装所需插件&#xff0c;插件搜索不到的问题 1.通过设置代理和去掉使用安装链接的方式来解决的 File–>Settings–>Appearance & Behavior–>System Settings—>HTTP Proxy(修改为图片所示) 2.在系统设置中将更新选项中的“use secure connection”…

Xml与Json格式在线转换器

具体请前往&#xff1a;在线Json转Form表单参数工具

QEMU源码全解析 —— virtio(12)

接前一篇文章&#xff1a; 上一回对于virtio_device_realize函数进行了详细解析。在第2步中virtio_device_realize函数调用了具体类的realize函数&#xff0c;对于virtio balloon设备来说是virtio_balloon_realize函数。本回就来对于virtio_balloon_device_realize函数进行解析…

C语言 字符串处理相关函数大汇总

1&#xff0c;strcpy函数 将一个字符串复制到另一个字符串。 2&#xff0c;strncpy函数&#xff0c;将一个字符串的前n个字符复制到另一个字符串中。 3&#xff0c;strcat函数&#xff0c;将两个字符串连接起来。 4&#xff0c;strncat函数,用于将一个字符串的前n个字符追加…

C语言之函数式宏

目录 函数和数据类型 函数式宏 函数和函数式宏 函数式宏和对象式宏 不带参数的函数式宏 函数式宏和逗号运算符 函数式宏和函数类似并且比函数更加灵活&#xff0c;下面我们就来学习函数式宏的相关内容。 函数和数据类型 我们来编写一个程序&#xff0c;它能计算出所读取…