无论情况如何,字符串比较的Less Than运算符都会产生相同的结果

时间:2015-08-14 10:48:56

标签: c++ string operators string-comparison

我想看看Less Than运算符(<)是否适用于字符串。嗯,确实如此。我开始尝试它,事实证明,无论坐姿如何,我都得到了相同的结果。左边的字符串总是小于右边的字符串,即使我交换了字符串。好奇为什么会这样做,我试着查看<运算符实际上对字符串的作用。我读到它对两个字符串进行了字典比较。尽管如此,这并没有回答为什么我的代码正在做它正在做的事情。例如:

int main () {

if ("A" < "B")
    std::cout << "Yes";
else
    std::cout << "No";

return 0;

}

输出Yes。那讲得通。但是当我交换字符串时:

int main () {

if ("B" < "A")
    std::cout << "Yes";
else
    std::cout << "No";

return 0;

}

它仍会输出Yes。我不知道我现在是否只是无知而且不完全了解这里发生的事情,或者是否有什么问题。

1 个答案:

答案 0 :(得分:6)

这是因为字符串文字为您提供了指向包含字符串(以及其终结符)的只读数组的指针。你比较的不是字符串,而是指针到这些字符串。

如果要比较C风格的字符串,请使用std::strcmp。或者使用已定义重载比较运算符的std::string