21xrx.com
2024-12-23 00:36:51 Monday
登录
文章检索 我的文章 写文章
C++字符串寻找子串
2023-06-28 07:52:58 深夜i     --     --
C++ 字符串 寻找 子串 算法

在C++编程中,字符串是一种非常常见的数据类型。如果需要在一个字符串中找到一个子字符串,C++提供了多种方法来实现该功能。

方法一:使用库函数string::find()

C++提供了一个string类来表示字符串,该类中包含了find()函数来寻找子字符串。这个函数返回子字符串在字符串中的起始位置,如果字符串中不存在该子字符串,则返回string::npos。

下面是使用string::find()函数来寻找子字符串的示例代码:


#include <iostream>

#include <string>

using namespace std;

int main() {

 string str = "Hello, World!";

 string subStr = "World";

 size_t pos = str.find(subStr);

 if (pos != string::npos)

  cout << "Substring found at position " << pos << endl;

  else

  cout << "Substring not found" << endl;

 

 return 0;

}

这个示例代码在字符串"Hello, World!"中查找子字符串"World",如果找到,则输出子字符串的起始位置。运行代码,输出结果为:"Substring found at position 7",说明在字符串中找到了子字符串"World"。

方法二:使用C库函数strstr()

C++中也可以使用C库函数strstr(),该函数在C字符串中查找子字符串的起始位置。它的定义为:


char * strstr(const char * str1, const char * str2)

其中,str1是要查找的字符串,str2是要查找的子字符串。如果找到,则返回子字符串在字符串中的起始位置,否则返回NULL。

下面是使用strstr()函数来寻找子字符串的示例代码:


#include <iostream>

#include <cstring>

using namespace std;

int main() {

 char str[20] = "Hello, World!";

 char subStr[10] = "World";

 char * pos = strstr(str, subStr);

 if (pos != NULL)

  cout << "Substring found at position " << pos - str << endl;

  else

  cout << "Substring not found" << endl;

 

 return 0;

}

这个示例代码在字符串"Hello, World!"中查找子字符串"World",如果找到,则输出子字符串的起始位置。运行代码,输出结果同上个示例代码。

结论:

C++提供了多种方法来寻找子字符串,其中string::find()函数和strstr()函数是最常见的两种方法。在使用这两种方法时,需要注意C字符串中的子字符串必须以'\0'结尾,否则可能会出现不确定的错误。同时,如果要查找一个子字符串的所有出现位置,可以在找到第一个位置后继续查找剩余部分,直到找不到为止。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复