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 cppreference.net
<
cpp
|
string
|
char traits
|
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 的内置操作 |
- ↑ 大多数实现出于效率考虑会调用 std::memcmp() ,该函数将数据解释为 unsigned char 数组。在此类实现中,若 char 为有符号类型 ,则 std:: char_traits < char > 无法满足 CharTraits 的要求。