名前空間
変種
操作

名前付き要件: CharTraits

提供: cppreference.com
< cpp‎ | named req
 
 
名前付き要件
基本
レイアウト
ライブラリ全体
コンテナ
コンテナの要素
イテレータ
ストリーム入出力
乱数
並行処理
(C++11)

(C++11)
(C++11)
その他
CharTraits
 

CharTraits は指定された文字型に対する基本的な文字および文字列の操作を抽象化する特性クラスです。 ほとんどの標準ライブラリの文字列および入出力クラスは対応する文字テンプレート型パラメータと共に CharTraits テンプレートを要求します。

[編集] 要件

いかなる CharTraits の操作も例外を投げてはなりません。

  • 文字型 CharT
  • CharT に対する CharTraits X
  • CharT 型の値 c, d
  • const CharT* 型の値 p, q
  • CharT* 型の値 s
  • std::size_t 型の値 n, i, j
  • X::int_type 型の値 e, f
  • X::pos_type 型の値 pos
  • X::state_type 型の値 state
  • CharT 型の値 r

が与えられたとき、

戻り値の型 意味論 計算量
X::char_type CharT 文字型を参照するために使用されます。 コンパイル時
X::int_type X::char_type のすべての有効な値および X::eof() を保持できる型。 コンパイル時
X::off_type X が入出力クラスで特性テンプレート引数として使用されたとき std::streamoff でなければ処理系定義の動作を発生します。 コンパイル時
X::pos_type
  • この型を返す入出力クラスの関数はエラーを通知するための無効な値として X::pos_type(X::off_type(-1)) を使用します。
  • この型の値を取る std::istreamstd::ostream または std::streambuf の任意のメンバへの引数としてこの無効な値を使用することは未定義動作です。
  • X が入出力クラスの特性テンプレート引数として使用されたときこの型が std::streampos でなければ処理系定義の動作を発生します。
コンパイル時
X::state_type DestructibleCopyAssignableCopyConstructibleDefaultConstructible コンパイル時
X::eq(c,d) bool 戻り値: cd と等しいとみなされるかどうか。 定数時間
X::lt(c,d) bool 戻り値: cd より小さいとみなされるかどうか。 定数時間
X::compare(p,q,n) int 戻り値:
  • [0,n) 内のそれぞれの i について X​::​eq(p[i], q[i]) が true の場合は 0。
  • そうでなく、以下の場合は、負の値。
    • [0,n) 内のいずれかの j について X​::​lt(p[j], q[j]) が true であり、さらに
    • [0,j) 内のそれぞれの i について X​::​eq(p[i], q[i]) が true である。
  • そうでなければ、正の値。
線形時間
X::length(p) std::size_t 戻り値: X​::​eq(p[i], CharT()) が true であるような最も小さな i 線形時間
X​::​find(p,n,c) const X​::​char_type* 戻り値:
  • X​::​eq(*q, c) が true であるような [p,p+n) 内の最も小さな q
  • そうでなければゼロ。
線形時間
X​::​move(s,p,n) X​::​char_type*
  • [0,n) 内のそれぞれの i について X​::​assign(s[i], p[i]) を行います。
  • 範囲 [p,p+n)[s,s+n) がオーバーラップする場合でも正しくコピーします。
  • 戻り値: s
線形時間
X​::​copy(s,p,n) X​::​char_type*
  • 要件: p[s,s+n) 内に無い。
  • 戻り値: s
  • [0,n) 内のぞれぞれの i について、 X​::​assign(s[i], p[i]) を行います。
線形時間
X​::​assign(r,d) (Not used) r = d を代入します。 定数時間
X​::​assign(s,n,c) X​::​char_type*
  • [0,n) 内のそれぞれの i について X​::​assign(s[i], c) を行います
  • 戻り値: s
線形時間
X​::​not_eof(e) X​::​int_type 戻り値:
  • X​::​eq_int_type(e, X​::​eof()) が false の場合は e
  • そうでなければ X​::​eq_int_type(f, X​::​eof()) が false であるような値 f
定数時間
X​::​to_char_type(e) X​::​char_type 戻り値:
  • 何らかの c について X​::​eq_int_type(e, X​::​to_int_type(c)) が true であれば c
  • そうでなければ何らかの未規定な値。
定数時間
X​::​to_int_type(c) X​::​int_type 戻り値: X::to_char_type および X::eq_int_type の定義によって制約された何らかの値 e 定数時間
X​::​eq_int_type(e,f) bool
  • すべての c および d について、 X​::​eq(c,d)X​::​eq_int_type(X​::​to_int_type(c), X​::​to_int_type(d)) と等しい。
  • 戻り値:
    • 何らかの c および d について e == X::to_int_type(c) かつ f == X::to_int_type(d) であれば、 X​::​eq(c,d) を返します。
    • そうでなく、 ef がどちらも X​::​eof() のコピーであれば true を返します。
    • そうでなく、 ef の一方が X​::​eof() のコピーで他方がそうでなければ false を返します。
    • そうでなければ、値は未規定です。
定数時間
X​::​eof() X​::​int_type 戻り値: すべての c の値のついて X​::​eq_int_type(e, X​::​to_int_type(c)) が false であるような値 e 定数時間

[編集] 標準ライブラリ

CharTraits は以下の標準ライブラリのクラステンプレートによってテンプレート型引数として要求されます。

文字の並びを格納および操作します
(クラステンプレート) [edit]
読み込み専用の文字列ビュー
(クラステンプレート) [edit]
任意のストリームバッファを管理します
(クラステンプレート) [edit]
与えられた抽象デバイス (std::basic_streambuf) をラップし、高水準の入力インタフェースを提供します
(クラステンプレート) [edit]
高水準のファイルストリーム入力操作を実装します
(クラステンプレート) [edit]
高水準の文字列ストリーム入力操作を実装します
(クラステンプレート) [edit]
与えられた抽象デバイス (std::basic_streambuf) をラップし、高水準の出力インタフェースを提供します
(クラステンプレート) [edit]
高水準のファイルストリーム出力操作を実装します
(クラステンプレート) [edit]
高水準の文字列ストリーム出力操作を実装します
(クラステンプレート) [edit]
同期化出力ストリームラッパー
(クラステンプレート) [edit]
与えられた抽象デバイス (std::basic_streambuf) をラップし、高水準の入出力インタフェースを提供します
(クラステンプレート) [edit]
高水準のファイルストリーム入出力操作を実装します
(クラステンプレート) [edit]
高水準の文字列ストリーム入出力操作を実装します
(クラステンプレート) [edit]
std::basic_istream から読み込む入力イテレータ
(クラステンプレート) [edit]
std::basic_ostream に書き込む出力イテレータ
(クラステンプレート) [edit]
生のデバイスを抽象化します
(クラステンプレート) [edit]
生のファイルデバイスを実装します
(クラステンプレート) [edit]
生の文字列デバイスを実装します
(クラステンプレート) [edit]
同期化出力デバイスラッパー
(クラステンプレート) [edit]
std::basic_streambuf から読み込む入力イテレータ
(クラステンプレート) [edit]
std::basic_streambuf に書き込む出力イテレータ
(クラステンプレート) [edit]


CharTraits は以下の標準ライブラリのクラスによって満たされます。

template<> class char_traits<char>;

template<> class char_traits<wchar_t>;
template<> class char_traits<char8_t>;
template<> class char_traits<char16_t>;

template<> class char_traits<char32_t>;


(C++20以上)
(C++11以上)
(C++11以上)