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) |
(constexpr seit C++11)
(noexcept seit C++11) |
|
static
bool
lt
(
char_type a, char_type b
)
;
|
(2) |
(constexpr seit C++11)
(noexcept seit C++11) |
Vergleicht zwei Zeichen.
1)
Vergleicht
a
und
b
auf Gleichheit, verhält sich identisch zu
-
static_cast
<
unsigned
char
>
(
a
)
==
static_cast
<
unsigned
char
>
(
b
)
, falls
char_typeein char ist, - a == b andernfalls.
2)
Vergleicht
a
und
b
so, dass sie total geordnet sind, verhält sich identisch zu
-
static_cast
<
unsigned
char
>
(
a
)
<
static_cast
<
unsigned
char
>
(
b
)
, falls
char_typechar ist, - a < b andernfalls.
Siehe
CharTraits
für die allgemeinen Anforderungen an Zeicheneigenschaften für
X::eq
und
X::lt
.
Inhaltsverzeichnis |
Parameter
| a, b | - | zu vergleichende Zeichenwerte |
Rückgabewert
1)
true
wenn
a
und
b
gleich sind,
false
andernfalls.
2)
true
wenn
a
kleiner als
b
ist,
false
andernfalls.
Komplexität
Konstante.
Fehlerberichte
Die folgenden verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.
| DR | Angewendet auf | Verhalten wie veröffentlicht | Korrektes Verhalten |
|---|---|---|---|
| LWG 467 | C++98 |
für
std::
char_traits
<
char
>
sind die Semantiken von
eq()
und
lt()
identisch mit den eingebauten == und < auf char jeweils [1] |
geändert zu eingebauten
==
und
< auf unsigned char |
- ↑ Die meisten Implementierungen rufen std::memcmp() aus Effizienzgründen auf, was die Daten als Arrays von unsigned char interpretiert. Wenn char signiert ist auf solchen Implementierungen, std:: char_traits < char > erfüllt nicht die Anforderungen von CharTraits .