Spec-Zone.ru › C++

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 в противном случае.
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++.

DR Применено к Поведение, как опубликовано Корректное поведение
LWG 467 C++98 для std::char_traits<char>, семантика eq() и lt()
одинакова, как у встроенных == и < для char соответственно[1]
изменено на встроенные == и
< для unsigned char
  1. Большинство реализаций вызывают 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API