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
Материал из cppreference.com
<tbody>
</tbody>
<tbody class="t-dcl-rev t-dcl-rev-num ">
</tbody><tbody>
</tbody>
<tbody class="t-dcl-rev t-dcl-rev-num ">
</tbody><tbody>
</tbody>
| (1) | ||
static bool eq( char_type a, char_type b ); |
(до C++11) | |
static constexpr bool eq( char_type a, char_type b ) noexcept; |
(начиная с C++11) | |
| (2) | ||
static bool lt( char_type a, char_type b ); |
(до C++11) | |
static constexpr bool lt( char_type a, char_type b ) noexcept; |
(начиная с C++11) | |
Сравнивает два символа.
1) Сравнивает
a и b на равенство, ведёт себя идентично
static_cast<unsigned char>(a) == static_cast<unsigned char>(b), еслиchar_typeявляетсяchar,a == bиначе.
2) Сравнивает
a и b таким образом, что они полностью упорядочены, ведёт себя идентично
static_cast<unsigned char>(a) < static_cast<unsigned char>(b), еслиchar_typeявляетсяchar,a < bиначе.
Смотрите CharTraits для получения общих требований к свойствам символов для X::eq и X::lt.
Параметры
| 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]
|
заменено на встроенные == и <для unsigned char
|
- ↑ Большинство реализаций вызывают std::memcmp() для повышения эффективности, которая интерпретирует данные в виде массивов
unsigned char. Еслиcharзнаковый в таких реализациях,std::char_traits<char>не соответствует требованиям CharTraits.