【发布时间】:2020-12-23 09:45:43
【问题描述】:
我正在学习 C++。我很惊讶它可以比较字符串。以下代码针对字符串a 和b 成功编译并运行。
if (b >= a)
{}
什么意思?
【问题讨论】:
-
贴出的代码无法编译:
temp.cpp:1:1: error: expected unqualified-id -
你的惊喜是惊人的,想必你听说过字母顺序,或者字典顺序?
-
@john 在提出问题之前我使用 b="Bb" 和 a="Aa" 以及许多其他方法进行了测试,结果发现 b>a 确实如此。我想过,但我不确定。我想知道他们如何准确地订购字符串,而不仅仅是通过反复试验来了解。
-
还有一件事——经常被遗忘——比较的结果是实现定义的。例如,使用 ASCII 编码的系统将大写字母放在首位,EBCDIC 将小写字母放在首位。尽管存在
tolower和toupper之类的函数,但标准 C++ 中仍然没有内置大小写比较函数。(但我们在 C++20 中获得了绝对重要的东西,比如新的格式化库 ;-)) -
@Adola 抱歉,我以为您对存在任何比较可能感到惊讶。正如拔示巴所说,没有标准的秩序。这将是一个“a”>“b”的疯狂系统,但允许这样的系统。最常见的顺序是由ASCII encoding 定义的。
标签: c++ string operator-overloading string-comparison stdstring