我想看看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
。我不知道我现在是否只是无知而且不完全了解这里发生的事情,或者是否有什么问题。
答案 0 :(得分:6)
这是因为字符串文字为您提供了指向包含字符串(以及其终结符)的只读数组的指针。你比较的不是字符串,而是指针到这些字符串。
如果要比较C风格的字符串,请使用std::strcmp
。或者使用已定义重载比较运算符的std::string
。