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

embedded/2024/10/18 12:31:16/

目录

一.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  可以检查查找操作是否成功。


http://www.ppmy.cn/embedded/85633.html

相关文章

JavaDS —— 排序

排序的概念 排序&#xff1a;所谓排序&#xff0c;就是使一串记录&#xff0c;按照其中的某个或某些关键字的大小&#xff0c;递增或递减的排列起来的操作。 稳定性&#xff1a;假定在待排序的记录序列中&#xff0c;存在多个具有相同的关键字的记录&#xff0c;若经过排序&a…

iOS object-C 解答算法:找到所有数组中消失的数字(leetCode-448)

找到所有数组中消失的数字(leetCode-448) 题目如下图:(也可以到leetCode上看完整题目,题号448) 光看题看可能有点难以理解,我们结合示例1来理解一下这道题. 有8个整数的数组 nums [4,3,2,7,8,2,3,1], 求在闭区间[1,8]范围内(即1,2,3,4,5,6,7,8)的数字,哪几个没有出现在数组 …

[Day 34] 區塊鏈與人工智能的聯動應用:理論、技術與實踐

機器學習模型的訓練與評估 機器學習模型的訓練與評估是整個機器學習過程中的核心部分。這篇文章將詳細探討如何訓練和評估機器學習模型&#xff0c;並提供具體的代碼示例和詳細解釋&#xff0c;幫助讀者更好地理解和掌握這些技術。 一、機器學習模型的訓練 模型訓練是機器學…

利用换元法计算积分的常见题型(考研高数复习)

考研中常见的几种换元法积分计算题 (1)被积式仅包含一个根式&#xff1a;根号下为有 a a a 和 x x x 的平方和/平方差 此种类型的积分题型&#xff0c;可以通过构造单个锐角大小为 t t t 的直角三角形&#xff0c;利用勾股定理和三角函数进行代换。 平方和的情况 形如 ∫…

了解网络是如何运作

“Web 的工作原理”提供了一个简化的视图,用于了解在计算机或手机上的 Web 浏览器中查看网页时发生的情况。 这个理论对于短期内编写 Web 代码来说并不是必需的,但不久之后,你就会真正开始从理解后台发生的事情中受益。 客户端和服务器 连接到 Internet 的计算机称为客户端和…

网站用HTTP访问的危害以及如何升级HTTPS访问

在互联网世界中&#xff0c;数据传输的安全性是至关重要的。我们每天都在网络上进行各种操作&#xff0c;从浏览网页、购物到银行转账&#xff0c;每一项活动都涉及敏感信息的传递。然而&#xff0c;在这个过程中&#xff0c;我们的数据可能面临被窃取、篡改或滥用的风险。这正…

C2W3.Assignment.Language Models: Auto-Complete.Part1

理论课&#xff1a;C2W3.Auto-complete and Language Models 文章目录 1 Load and Preprocess Data1.1: Load the data1.2 Pre-process the dataExercise 01.Split data into sentencesExercise 02.Tokenize sentencesExercise 03Split into train and test sets Exercise 04H…

mac OS matplotlib missing from font(s) DejaVu Sans

如果能搜索到这篇文章&#xff0c;我猜你遇到了和我一样的问题&#xff1a;matplotlib绘图中文乱码。如下&#xff1a; 出现这个问题的原因是&#xff1a;matplotlib使用的字体列表中默认没有中文字体。 这里说一种解决方案&#xff1a;我们可以在文件中手动指定matplotlib使用…