繁体   English   中英

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

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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM