Namespaces
Variants

std::char_traits<char>:: eq/lt, std::char_traits<wchar_t>:: eq/lt, std::char_traits<char8_t>:: eq/lt, std::char_traits<char16_t>:: eq/lt, std::char_traits<char32_t>:: eq/lt

From zh.cppreference.net
static bool eq ( char_type a, char_type b ) ;
(1) (自 C++11 起为 constexpr)
(自 C++11 起为 noexcept)
static bool lt ( char_type a, char_type b ) ;
(2) (自 C++11 起为 constexpr)
(自 C++11 起为 noexcept)

比较两个字符。

1) 比较 a 与 b 是否相等,具体行为等同于:
  • 当 char_type 为 char 时,等同于 static_cast < unsigned char > ( a ) == static_cast < unsigned char > ( b )
  • 其他情况下等同于 a == b
2) 以全序方式比较 a 和 b ,其行为等同于:
  • 若 char_type 为 char ,则表现为 static_cast < unsigned char > ( a ) < static_cast < unsigned char > ( b ) ,
  • 否则表现为 a < b 。

请参阅 CharTraits 了解关于字符特征类中 X::eq 和 X::lt 的通用要求。

目录

参数

a, b - 待比较的字符值

返回值

1) true 若 a 与 b 相等,否则为 false 。
2) 若 a 小于 b 则返回 true ,否则返回 false 。

复杂度

常量。

缺陷报告

下列行为变更缺陷报告被追溯应用于先前发布的C++标准。

缺陷报告 应用于 发布时行为 正确行为
LWG 467 C++98 对于 std:: char_traits < char > , eq() 和 lt()
的语义分别与 == 和 < 对 char 的内置操作相同 [1]
改为 == 和
< 对 unsigned char 的内置操作
  1. ↑ 大多数实现出于效率考虑会调用 std::memcmp() ,该函数将数据解释为 unsigned char 数组。在此类实现中,若 char 为有符号类型 ,则 std:: char_traits < char > 无法满足 CharTraits 的要求。