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
| (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в противном случае.
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++.
| DR | Применено к | Поведение, как опубликовано | Корректное поведение |
|---|---|---|---|
| LWG 467 | C++98 | для std::char_traits<char>, семантика eq() и lt()одинакова, как у встроенных == и < для char соответственно[1] | изменено на встроенные == и< для unsigned char |
- Большинство реализаций вызывают
std::memcmp()для повышения эффективности, что интерпретирует данные как массивыunsigned char. Еслиcharявляется знаковым в таких реализациях,std::char_traits<char>не удовлетворяет требованиям CharTraits.
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/string/char_traits/cmp