find函数用于查找子串,若找到返回首次出现位置,否则返回npos;示例中"world"在"Hello, world!"中位置为7。

在C++中查找字符串中的子串,主要依赖于std::string类提供的find函数。这个函数功能强大、使用简单,是处理字符串匹配的常用工具。下面详细介绍它的用法和常见场景。
find函数的基本用法
find是std::string的一个成员函数,用于在字符串中查找指定的子串或字符。如果找到,返回子串首次出现的位置(从0开始的索引);如果未找到,返回std::string::npos。
基本语法:
size_t pos = str.find(substring);示例:
立即学习“C++免费学习笔记(深入)”;
std::string str = "Hello, world!"; std::string sub = "world"; size_t pos = str.find(sub); if (pos != std::string::npos) { std::cout从指定位置开始查找
你可以指定查找的起始位置,避免重复查找已匹配的部分。
语法:
size_t pos = str.find(substring, start_index);例如,跳过前几个字符再查找:
std::string text = "apple apple banana apple"; size_t pos = text.find("apple", 7); // 从第7个字符开始找 // 找到第二个"apple"查找单个字符或C风格字符串
find也支持查找单个字符或以const char*形式传入的字符串:
-
str.find('a'):查找字符'a' -
str.find("abc"):查找C风格字符串"abc"
这在处理混合字符串类型时非常方便。
其他相关的查找函数
C++还提供了几个变体函数,满足不同查找需求:
- rfind():从右往左查找,返回最后一次出现的位置
- find_first_of():查找任意一个指定字符首次出现的位置(比如查找空格或标点)
- find_last_of():查找任意一个指定字符最后一次出现的位置
- find_first_not_of():查找第一个不在指定集合中的字符
例如,查找最后一个"apple":
size_t pos = text.rfind("apple");基本上就这些。掌握find及其变体,就能高效处理大多数C++字符串查找任务。关键是记得判断返回值是否为npos,避免越界访问。











