C++ 中 string == 和 compare() 之间的差别?


在 C++ 中我们可以使用 compare() 函数和 == 运算符来比较两个字符串。那么问题是为什么会有两种不同方法?有任何差别吗?

在 C++ 中,== 运算符被重载为字符串,以检查两个字符串是否相同。如果它们相同,则返回 1,否则返回 0。因此它就像布尔类型函数。

compare() 函数返回不同的结果。如果两者相等,它将返回 0,如果字符 s 和 t 发现不匹配,并且 s 小于 t,则返回 -1,否则 s 大于 t 时,它返回 +1 。它使用 ASCII 码来检查匹配项。

让我们看一个示例来了解上述讨论。

示例代码

在线演示

#include <iostream>
using namespace std;

int main() {
   string str1 = "Hello";
   string str2 = "Help";
   string str3 = "Hello";

   cout << "Comparing str1 and str2 using ==, Res: " << (str1 == str2) << endl;//0 for no match
   cout << "Comparing str1 and str3 using ==, Res: " << (str1 == str3) << endl;//1 for no match

   cout << "Comparing str1 and str2 using compare(), Res: " << str1.compare(str2) << endl;//checking smaller and greater
   cout << "Comparing str1 and str3 using compare(), Res: " << str1.compare(str3) << endl;//0 for no match
}

输出

Comparing str1 and str2 using ==, Res: 0
Comparing str1 and str3 using ==, Res: 1
Comparing str1 and str2 using compare(), Res: -1
Comparing str1 and str3 using compare(), Res: 0

更新日期:2019-07-30

3K+ 次浏览

开启你的 职业生涯

完成课程,获得认证

开始吧
广告