21xrx.com
2024-12-27 11:18:31 Friday
登录
文章检索 我的文章 写文章
如何用C++判断一个字符串是否包含另一个字符串?
2023-07-05 07:26:51 深夜i     --     --
C++ 字符串 判断 包含 子字符串

在C++编程中,判断一个字符串是否包含另一个字符串是非常常见的问题。在本文中,我们将介绍使用C++的方法来实现这一目标。

1.利用string类中的find方法

C++中,string类提供了一个find方法,这个方法可以搜索一个字符串是否出现在另一个字符串中。当搜索到字符串时,find方法将返回字符串的起始位置。如果未搜索到,则返回一个特殊的无符号Int值string::npos。那么我们可以根据它是否等于string::npos来判断是否存在这个字符串。示例代码如下:


#include <iostream>

#include <string>

using namespace std;

int main()

{

  string s1 = "Hello World!";

  string s2 = "World";

  if (s1.find(s2) != string::npos)

  

    cout << "s1 contains s2." << endl;

  

  else

  

    cout << "s1 does not contain s2." << endl;

  

  return 0;

}

2.使用strstr函数

除了string类提供的find方法,C++还提供了一个C函数叫做strstr。这个函数可以查找一个字符串是否出现在另一个字符串中,并返回一个指向第一次出现这个字符串的位置的指针。如果未搜索到,则返回一个空指针。那么我们可以根据它是否为空指针来判断是否存在这个字符串。示例代码如下:


#include <iostream>

#include <cstring>

using namespace std;

int main()

{

  char s1[] = "Hello World!";

  char s2[] = "World";

  if (strstr(s1, s2) != nullptr)

  

    cout << "s1 contains s2." << endl;

  

  else

  

    cout << "s1 does not contain s2." << endl;

  

  return 0;

}

3.使用正则表达式

正则表达式是一种强大而灵活的字符串匹配工具。C++11添加了对正则表达式的支持,使用regex类和相关函数可以进行正则表达式匹配。示例代码如下:


#include <iostream>

#include <regex>

using namespace std;

int main()

{

  string s1 = "Hello World!";

  string s2 = "World";

  regex pattern(s2);

  if (regex_search(s1, pattern))

  

    cout << "s1 contains s2." << endl;

  

  else

  

    cout << "s1 does not contain s2." << endl;

  

  return 0;

}

以上是判断一个字符串是否包含另一个字符串的三种方法。根据实际需求和具体情况选择方法。需要注意的是,在使用字符串匹配算法的时候,为了提高效率,我们应该尽量避免使用动态申请内存等操作,尽可能使用基础的字符串类型和C函数来操作字符串。

  
  

评论区

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