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
static bool eq( char_type a, char_type b ); | (1) | (constexpr с C++11) (noexcept с C++11) |
static bool lt( char_type a, char_type b ); | (2) | (constexpr с C++11) (noexcept с C++11) |
Сравнивает два символа.
1) Сравниваетa и b на равенство; ведёт себя идентично -
static_cast<unsigned char>(a) == static_cast<unsigned char>(b), еслиchar_typeимеет тип char, -
a == bв противном случае.
a и b таким образом, чтобы они были полностью упорядочены; ведёт себя идентично -
static_cast<unsigned char>(a) < static_cast<unsigned char>(b), еслиchar_typeимеет тип char, -
a < bв противном случае.
Общие требования к traits символов для X::eq и X::lt см. в разделе CharTraits.
Параметры
| a, b | - | сравниваемые значения символов |
Возвращаемое значение
1)
true, если a и b равны, и false в противном случае.
2)
true, если a меньше b, и false в противном случае.Сложность
Постоянная.
Отчёты об ошибках
Следующие отчёты об ошибках, изменяющие поведение, были применены ретроспективно к ранее опубликованным стандартам C++.
| Отчёт об ошибке | Применяется к | Опубликованное поведение | Корректное поведение |
|---|---|---|---|
| LWG 467 | C++98 | для std::char_traits<char> семантика eq() и lt()совпадает с семантикой встроенных == и < для char соответственно[1] | изменено на встроенные == и< для unsignedchar |
- Для повышения эффективности большинство реализаций вызывают
std::memcmp(), которая интерпретирует данные как массивы unsignedchar. Если в таких реализациях тип char знаковый, std::char_traits<char> не удовлетворяет требованиям CharTraits.
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/string/char_traits/cmp