[英]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.