【发布时间】:2021-12-04 06:53:56
【问题描述】:
假设:: 当 a 在 b 之前时,a
代码
std::string a = "i";
std::string b = "Love";
std::cout << "(a < b) = " << ((a < b) ? "true" : "false");
输出
(a < b) = false
我们知道“i”在“Love”之前,那么为什么上面的代码返回 false?
我最初的假设是错误的吗?
感谢您的帮助。
【问题讨论】:
-
不要为 C++ 问题标记 C。
-
"...我们知道 "i" 先于 "Love" ..." 你可能想检查这个假设 - en.cppreference.com/w/cpp/language/ascii
-
你要的关键字是“不区分大小写比较”
-
C++ 语言中不要求表示字符“
i”的值小于表示字符'L'的值。事实上,编译器使用的字符编码似乎正好相反。字符集的唯一语言要求是字符'0' .. '9'的值必须相邻且递增。这使您可以通过ch - '0'将数字字符转换为该字符所代表的值。