std::string 的比较和 == 之间的差异 [重复]

Posted

技术标签:

【中文标题】std::string 的比较和 == 之间的差异 [重复]【英文标题】:Differences between compare and == for std::string [duplicate] 【发布时间】:2021-09-15 13:55:08 【问题描述】:

在两个字符串之间使用==std::string::compare 时得到不同的结果。

这是我正在执行的代码。

#include <iostream>
#include <string>

int main()

    std::string str1 = "W";
    char tmpChar = 'W';
    std::string str2(1, tmpChar);
    
    bool equalCompare = str1.compare(str2);
    bool equalSign = (str1 == str2);
    std::cout << "Compare result: " << equalCompare << std::endl;
    std::cout << "Equal sign result: " << equalSign << std::endl;
    
    return 0;

我想这与我创建 str2 的方式有关,但这是我发现将单个字符转换为字符串的方式。

【问题讨论】:

我看到那个帖子,我认为他们应该是平等的。 eeroika 的回答是对的。比较返回一个整数,我认为它是一个布尔值。区别在于铸件 【参考方案1】:

比较和 == 用于 std::string 的区别

不同之处在于它们返回的内容。 == 当字符串比较相等时返回 true,否则返回 false。 compare*this 在参数之前返回负整数,当字符串相等时返回零,当参数在*this 之前时返回正整数。

【讨论】:

对!我误读了文档。谢谢!

以上是关于std::string 的比较和 == 之间的差异 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

请教一个 C语言 字符串数组之间比较的算法,谢谢

如何比较 std::string 和 char*?

std::string 和字符串文字之间的不一致

c++17比较string_view和string时的歧义

我可以使用模板在QString和std :: string之间进行自动转换吗?

linux C++获取两个std::set容器差异(容器元素差异)(容器元素差别)std::set_differencestd::inserter