名前空間
変種
操作

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.com
< cpp‎ | string‎ | char traits
static bool eq( char_type a, char_type b );
(1) (C++11 以降 constexpr)
(C++11 以降 noexcept)
static bool lt( char_type a, char_type b );
(2) (C++11 以降 constexpr)
(C++11 以降 noexcept)

2つの文字を比較します。

1) ab を等価比較します。char_typechar の場合は、
  • static_cast<unsigned char>(a) == static_cast<unsigned char>(b) と同等に動作します。
  • それ以外の場合は、a == b と同等に動作します。
2) ab を全順序比較します。char_typechar の場合は、
  • static_cast<unsigned char>(a) < static_cast<unsigned char>(b) と同等に動作します。
  • それ以外の場合は、a < b と同等に動作します。

CharTraits を参照してください。これは、X::eq および X::lt に対する文字特性の一般的な要件を示しています。

目次

[編集] パラメータ

a, b - 比較する文字の値

[編集] 戻り値

1) true : ab が等しい場合。false : それ以外の場合。
2) true : ab より小さい場合。false : それ以外の場合。

[編集] 計算量

定数。

[編集] 不具合報告

以下の動作変更を伴う欠陥報告が、以前に公開されたC++標準に遡って適用されました。

DR 適用対象 公開された動作 正しい動作
LWG 467 C++98 std::char_traits<char> の場合、eq()lt() のセマンティクスが
それぞれ == および < の組み込み演算子と同じように変更されました[1]
変更後のセマンティクスは、== および
< の組み込み演算子を unsigned char に対して使用するのと同等です。
  1. ほとんどの実装では、効率のために std::memcmp() を呼び出します。これは、データを unsigned char の配列として解釈します。そのような実装で char符号付き の場合、std::char_traits<char>CharTraits の要件を満たせなくなります。
English 日本語 中文(简体) 中文(繁體)