21xrx.com
2024-09-20 05:43:25 Friday
登录
文章检索 我的文章 写文章
如何在C++中比较两个字符串的相等性?
2023-07-05 08:48:34 深夜i     --     --
C++字符串 比较相等性 字符串比较函数

在C++中,比较两个字符串的相等性是一个很常见的问题,特别是在编写涉及文本处理和数据比较的程序时。在本文中,我们将探讨几种用于比较字符串相等性的方法,以及这些方法的实现方式。

一、使用strcmp()函数

C++中,可以使用strcmp()函数来比较两个字符串的相等性,该函数定义在cstring库中。strcmp()函数有两个形参,分别是要比较的两个字符串指针。该函数返回一个整型值,如果函数返回0,则表示两个字符串相等;否则表示不相等。

示例代码如下:


#include <cstring>

#include <iostream>

using namespace std;

int main() {

  char str1[] = "hello";

  char str2[] = "world";

  char str3[] = "hello";

  if (strcmp(str1, str2) == 0)

    cout << "str1 and str2 are equal" << endl;

   else

    cout << "str1 and str2 are not equal" << endl;

  

  if (strcmp(str1, str3) == 0)

    cout << "str1 and str3 are equal" << endl;

   else

    cout << "str1 and str3 are not equal" << endl;

  

  return 0;

}

输出:


str1 and str2 are not equal

str1 and str3 are equal

二、使用std::string类

除了使用C风格字符串比较,C++还提供了一个std::string类,它使得处理字符串变得更加方便。默认情况下,std::string类提供了相等运算符(==)和不等运算符(!=),可以直接比较两个字符串的相等性。

示例代码如下:


#include <iostream>

#include <string>

using namespace std;

int main() {

  string str1 = "hello";

  string str2 = "world";

  string str3 = "hello";

  if (str1 == str2)

    cout << "str1 and str2 are equal" << endl;

   else

    cout << "str1 and str2 are not equal" << endl;

  

  if (str1 == str3)

    cout << "str1 and str3 are equal" << endl;

   else

    cout << "str1 and str3 are not equal" << endl;

  

  return 0;

}

输出:


str1 and str2 are not equal

str1 and str3 are equal

三、使用boost库

除了上述两种方法外,C++的boost库也提供了许多字符串比较的函数。例如,boost::algorithm::equals()函数可用于比较两个字符串的相等性,它比strcmp()函数具有更好的性能。

示例代码如下:


#include <iostream>

#include <boost/algorithm/string.hpp>

using namespace std;

int main() {

  string str1 = "hello";

  string str2 = "world";

  string str3 = "hello";

  if (boost::algorithm::equals(str1, str2))

    cout << "str1 and str2 are equal" << endl;

   else

    cout << "str1 and str2 are not equal" << endl;

  

  if (boost::algorithm::equals(str1, str3))

    cout << "str1 and str3 are equal" << endl;

   else

    cout << "str1 and str3 are not equal" << endl;

  

  return 0;

}

输出:


str1 and str2 are not equal

str1 and str3 are equal

综上,比较两个字符串的相等性可以使用C风格字符串的strcmp()函数、C++的std::string类、或boost库中的字符串比较函数。具体应该使用哪种方法,取决于个人习惯和实际情况。

  
  

评论区

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