【问题标题】:What is the meaning of comparing strings with >= [duplicate]用>=比较字符串是什么意思[重复]
【发布时间】:2020-12-23 09:45:43
【问题描述】:

我正在学习 C++。我很惊讶它可以比较字符串。以下代码针对字符串ab 成功编译并运行。

if (b >= a)
{}

什么意思?

【问题讨论】:

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

标签: c++ string operator-overloading string-comparison stdstring


【解决方案1】:

std::string 的所有比较都是按字典顺序进行的。见std::basic_string::operator>=

您可以在此处找到一个很好的答案,详细解释这一点: Using the less than comparison operator for strings。运算符<>=虽然不是等价的,但原理是一样的。

【讨论】:

猜你喜欢
  • 2017-02-24
  • 1970-01-01
  • 2013-11-07
  • 2014-12-23
  • 1970-01-01
  • 2010-11-20
  • 2018-05-09
  • 1970-01-01
  • 2018-08-28
相关资源
最近更新 更多