当前位置: 首页 > news >正文

【C++】C++中的find方法介绍

目录

一.find方法基本用法

1.查找字符

2.查找子字符串

3.查找子字符串(从指定位置开始)

4.查找字符范围

5.查找不包含特定字符的范围

二.使用string::npos返回无效位置

三.总结


在C++中, std::string  类的  find  成员函数用于查找子字符串在字符串中的位置。 find  函数有多个重载版本,允许你以不同的方式执行查找操作。

一.find方法基本用法

#include <iostream>
#include <string>int main() {std::string str = "Hello World!";size_t pos = str.find("World");if (pos != std::string::npos) {std::cout << "Found 'World' at position: " << pos << std::endl;} else {std::cout << "The substring 'World' was not found." << std::endl;}return 0;
}

在这个示例中, find  被用来查找子字符串  "World"  在字符串  str  中的位置。如果找到了, pos  将包含子字符串的起始索引;如果没有找到, pos  将被设置为 std::string::npos 。

1.查找字符

size_t pos = str.find('o');

这个调用查找字符  'o'  在字符串中的位置。

2.查找子字符串

size_t pos = str.find("World");

这个调用查找子字符串  "World"  在字符串中的位置。

3.查找子字符串(从指定位置开始)

size_t pos = str.find("World", 6);

这个调用从索引 6 开始查找子字符串  "World" 。

4.查找字符范围

size_t pos = str.find_first_of("lo");

这个调用查找任何  "lo"  中的字符在字符串中第一次出现的位置。还有  find_last_of  来查找最后一次出现的位置。

5.查找不包含特定字符的范围

size_t pos = str.find_first_not_of("Hdle");

这个调用查找第一个不是  "Hdle"  中的字符的位置。 find_last_not_of  用于查找最后一次出现的位置。

二.使用string::npos返回无效位置

 string::npos  是 C++ 标准库中  std::string  类型的一个静态成员常量,表示“未找到”或“无效位置”。当你使用  std::string  的某些方法,如  find 、 rfind 、 find_first_of  等,它们返回一个位置索引时,如果没有找到指定的子字符串或字符,这些方法就会返回  string::npos 。

例如:

std::string str = "Hello, World!";
size_t pos = str.find("test");if (pos == std::string::npos) {// 没有找到子字符串 "test"
}

在这个例子中,如果  str  中没有 "test" 这个子字符串, pos  将被赋值为  string::npos 。

它的值是  std::string  类型能够表示的最大大小加一(通常是  size_t(-1) )。

三.总结

find  函数是  std::string  类中非常有用的成员函数之一,它提供了灵活的方式来查找子字符串或字符。使用  npos  可以检查查找操作是否成功。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 无标题栏窗口通过消息模拟拖动窗口时,无法拖动的一个原因
  • 鸿蒙应用框架开发【基于原生能力的无障碍模式】
  • ​​​​​​​开发面试“八股文”:助力还是阻力?
  • 基于Deap遗传算法在全量可转债上做因子挖掘(附python代码及全量因子数据)
  • 《计算机网络》(学习笔记)
  • redis面试(三)Hash数据结构
  • Linux--Socket编程TCP
  • LIMS实验室管理系统的三大分类
  • Python自学第五天
  • 计算机毕业设计选题推荐-学院教学工作量统计系统-Java/Python项目实战
  • 【C++】用Lua绑定C/C++对象,实现对脚本调用(依赖LuaBridge实现)
  • Hello 算法:动画图解、一键运行的数据结构与算法教程
  • MySQL的面试题,从简单到困难三道题目
  • 【计算机网络】DHCP实验
  • Windows下编译安装Kratos
  • 《剑指offer》分解让复杂问题更简单
  • 345-反转字符串中的元音字母
  • Babel配置的不完全指南
  • hadoop集群管理系统搭建规划说明
  • httpie使用详解
  • javascript 总结(常用工具类的封装)
  • Laravel 菜鸟晋级之路
  • nginx 配置多 域名 + 多 https
  • Traffic-Sign Detection and Classification in the Wild 论文笔记
  • vue-cli在webpack的配置文件探究
  • windows下使用nginx调试简介
  • 和 || 运算
  • 技术发展面试
  • 前端设计模式
  • 运行时添加log4j2的appender
  • “十年磨一剑”--有赞的HBase平台实践和应用之路 ...
  • C# - 为值类型重定义相等性
  • HanLP分词命名实体提取详解
  • Spring Batch JSON 支持
  • 东超科技获得千万级Pre-A轮融资,投资方为中科创星 ...
  • ​ArcGIS Pro 如何批量删除字段
  • #laravel 通过手动安装依赖PHPExcel#
  • #NOIP 2014# day.1 生活大爆炸版 石头剪刀布
  • (+4)2.2UML建模图
  • (21)起落架/可伸缩相机支架
  • (PADS学习)第二章:原理图绘制 第一部分
  • (附源码)springboot“微印象”在线打印预约系统 毕业设计 061642
  • (每日一问)操作系统:常见的 Linux 指令详解
  • (三)Hyperledger Fabric 1.1安装部署-chaincode测试
  • (十三)Maven插件解析运行机制
  • (原创)可支持最大高度的NestedScrollView
  • (转载)Google Chrome调试JS
  • (转载)虚函数剖析
  • .java 指数平滑_转载:二次指数平滑法求预测值的Java代码
  • .MSSQLSERVER 导入导出 命令集--堪称经典,值得借鉴!
  • .net 7 上传文件踩坑
  • .net oracle 连接超时_Mysql连接数据库异常汇总【必收藏】
  • .NET 使用 ILMerge 合并多个程序集,避免引入额外的依赖
  • .net6 当连接用户的shell断掉后,dotnet会自动关闭,达不到长期运行的效果。.NET 进程守护
  • .net6+aspose.words导出word并转pdf