如何在c++中实现字符串的子串查找

avatar
作者
猴君
阅读量:0

在 C++ 中,可以使用 std::string 类的成员函数 find() 来实现字符串的子串查找。

find() 函数的原型如下:

size_t find(const std::string& str, size_t pos = 0) const; 

其中,str 是要查找的子串,pos 是可选参数,表示从哪个位置开始查找。如果省略该参数,则从字符串的开头开始查找。

函数返回子串在字符串中第一次出现的位置,如果没有找到则返回 std::string::npos

下面是一个简单的示例代码:

#include <iostream> #include <string>  int main() {     std::string str("hello world");     std::string sub("world");      size_t pos = str.find(sub);      if (pos != std::string::npos) {         std::cout << "子串的起始位置为:" << pos << std::endl;     } else {         std::cout << "未找到子串" << std::endl;     }      return 0; } 

输出结果为:

子串的起始位置为:6 

注意,find() 函数是区分大小写的。如果要执行不区分大小写的查找,可以在查找之前将字符串转换为小写(或大写):

std::string str("Hello World"); std::string sub("world");  std::transform(str.begin(), str.end(), str.begin(), ::tolower); std::transform(sub.begin(), sub.end(), sub.begin(), ::tolower);  size_t pos = str.find(sub);  if (pos != std::string::npos) {     std::cout << "子串的起始位置为:" << pos << std::endl; } else {     std::cout << "未找到子串" << std::endl; } 

输出结果为:

子串的起始位置为:6 

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!