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

Less Than operator on string comparison yields same result no matter the situation

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

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。我不知道我现在是否只是无知而没有完全理解这里发生的事情,或者是否有问题。

这是因为字符串文字为您提供了一个指向包含该字符串(及其终止符)的只读数组的指针。您要比较的不是字符串,而是指向这些字符串的 指针

使用定义了重载比较运算符的 std::strcmp if you want to compare C-style strings. Or use std::string

您正在将指向字符串 "A" 的指针与指向字符串 "B" 的指针进行比较。

如果你只想比较字符中的值,那么使用单引号 'A' 和 'B',如果你想比较字符串,那么使用 std::string class std::string("A") < std::string("B") 或 strcmp()