21xrx.com
2024-12-23 02:00:42 Monday
登录
文章检索 我的文章 写文章
C++字符串中查找子串
2023-06-30 10:51:41 深夜i     --     --
C++ 字符串 查找 子串

C++是一种高级编程语言,支持操作字符串。在C++中,字符串查找子串是一项非常常见的操作。查找子串的方法可以通过一些现成的函数来实现,也可以使用自己编写的代码来实现。

在C++中,字符串通常使用char数组或std::string类型表示。下面介绍几种常见的查找子串的方法:

1.使用string类的find函数

C++的string类提供了一个find函数,它可以在一个字符串中查找子串。以下是使用find函数查找子串的示例代码:


#include <iostream>

#include <string>

using namespace std;

int main()

{

  string str = "hello world";

  string sub_str = "world";

  size_t pos = str.find(sub_str);

  if (pos != string::npos)

  

    cout << "Found at position: " << pos << endl;

  

  else

  

    cout << "Not found" << endl;

  

  return 0;

}

在上面的代码中,使用了string类的find函数,查找子串“world”在字符串“hello world”中的位置。如果找到了,就返回这个子串在原字符串中的位置;如果没有找到,则返回string::npos。

2.使用C语言库函数strstr

C语言库函数strstr可以查找一个字符串中是否包含另一个字符串。以下是使用strstr函数查找子串的示例代码:


#include <iostream>

#include <cstring>

using namespace std;

int main()

{

  char str[] = "hello world";

  char sub_str[] = "world";

  char* pos = strstr(str, sub_str);

  if (pos != NULL)

  

    cout << "Found at position: " << pos - str << endl;

  

  else

  

    cout << "Not found" << endl;

  

  return 0;

}

在上面的代码中,使用了C语言库函数strstr,查找子串“world”在字符串“hello world”中的位置。如果找到了,就返回这个子串在原字符串中的位置;如果没有找到,则返回NULL。

3.使用自己编写的代码

除了使用现成的函数外,我们也可以写自己的代码来实现查找子串的功能。以下是一个基于暴力查找的算法示例代码:


#include <iostream>

#include <cstring>

using namespace std;

int find_sub_str(char* str, char* sub_str)

{

  int len1 = strlen(str);

  int len2 = strlen(sub_str);

  for (int i = 0; i <= len1 - len2; i++)

  {

    int j;

    for (j = 0; j < len2; j++)

    {

      if (str[i + j] != sub_str[j])

      

        break;

      

    }

    if (j == len2)

    

      return i;

    

  }

  return -1;

}

int main()

{

  char str[] = "hello world";

  char sub_str[] = "world";

  int pos = find_sub_str(str, sub_str);

  if (pos != -1)

  

    cout << "Found at position: " << pos << endl;

  

  else

  

    cout << "Not found" << endl;

  

  return 0;

}

在上面的代码中,使用了一个基于暴力查找的算法,查找子串“world”在字符串“hello world”中的位置。如果找到了,就返回这个子串在原字符串中的位置;如果没有找到,则返回-1。

总之,C++中查找子串是一项非常常见的操作,我们可以选择使用现成的函数,也可以自己编写代码来实现。无论哪种方式,都需要注意一些细节问题,如字符编码、字符串长度、返回值等等。

  
  

评论区

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