codecvt Class
ロケールのファセットとして使用できるオブジェクトを表すテンプレート クラス。値のプログラムとプログラム外の文字をエンコードするために使用するシーケンス内の文字をエンコードするために使用する値のシーケンス間の変換を制御することはできます。
template<class CharType, class Byte, class StateType>
class codecvt
: public locale::facet, codecvt_base {
public:
typedef CharType intern_type;
typedef Byte extern_type;
typedef StateType state_type;
explicit codecvt (size_t _Refs = 0);
result in (
StateType& _State,
const Byte *_First1,
const Byte *_Last1,
const Byte *_Next1,
CharType *_First2,
CharType *_Last2,
CharType *_Next2
);
result out (
StateType& _State,
const Elem *_First1,
const Elem *_Last1,
const Elem *_Next1,
Byte *_First2,
Byte *_Last2,
Byte *_Next2
);
result unshift (
StateType& _State,
Byte *_First2,
Byte *_Last2,
Byte *_Next2
);
bool always_noconv () const throw();
int max_length () const throw();
int length (
const StateType& _State,
const Byte *_First1,
const Byte *_Last1,
size_t _N2
) const throw();
int encoding () const throw();
static locale::id id;
protected:
~codecvt();
virtual result do_in (
StateType& _State,
const Byte *_First1,
const Byte *_Last1,
const Byte *_Next1,
CharType *_First2,
CharType *_Last2,
CharType *_Next2
);
virtual result do_out (
StateType& _State,
const CharType *_First1,
const CharType *_Last1,
const CharType *_Next1,
Byte *_First2,
Byte *_Last2,
Byte *_Next2
);
virtual result do_unshift (
StateType& _State,
Byte *_First2,
Byte *_Last2,
Byte *_Next2
);
virtual bool do_always_noconv () const throw();
virtual int do_max_length () const throw();
virtual int do_encoding () const throw();
virtual int do_length (
const StateType& _State,
const Byte *_First1,
const Byte *_Last1,
size_t _Len2
) const throw();
};
パラメーター
CharType
文字をエンコードするには、プログラム内で使用される型。Byte
プログラム外の文字をエンコードするために使用される型。StateType
文字表現内部および外部型の変換の中間状態を表すために使用できる型。
解説
このテンプレート クラスは ロケールのファセットとして使用できる型 CharType の値のシーケンスと Byte型の値のシーケンス間の変換を制御するオブジェクトを表します。クラスは StateType 変換機能を付けます -- クラスとクラス StateType のオブジェクトは変換中に必要な状態情報を格納します。
内部文字エンコーディングは一つの固定バイト数の表示を char 通常、型または型 wchar_t使用します。
すべてのロケールのファセットと同様に、静的オブジェクト id には、前項に格納されている値があります。格納されている値に最初にアクセスidでは一意で正の値を格納します。
do_in と do_out テンプレートのバージョンは codecvt_base::noconvを常に返します。
標準 C++ ライブラリは複数の明示的な特化を定義します:
template<>
codecvt<wchar_t, char, mbstate_t>
wchar_t と char のシーケンス間の変換。
template<>
codecvt<char16_t, char, mbstate_t>
UTF-16 にエンコードされた char16_t のシーケンスと UTF-8 としてエンコードされた char のシーケンス間の変換。
template<>
codecvt<char32_t, char, mbstate_t>
UTF-32 にエンコードされた char32_t のシーケンス () と UCS-4 UTF-8 としてエンコードされた char のシーケンス間の変換。
コンストラクター
変換を行うためにロケールのファセットとして機能するクラス codecvt オブジェクトのコンストラクター。 |
Typedef
外部の表示に使用される文字型。 |
|
内部表現に使用される文字型。 |
|
内部および外部形式間での変換中に中間状態を表すために使用される文字型。 |
メンバー関数
変換がする必要がないかどうかをテストします。 |
|
変換がする必要がないかどうかをテストするために呼び出される仮想関数。 |
|
その場合 Byte ストリームのエンコードが状態に依存する関数は仮想であることをテスト Byte使用すると、生成される CharTypeの比率は上がっていると、この比率の値をかどうかを判定します。 |
|
外部 CharType、. のシーケンスに内部 Byte、のシーケンスを変換するために呼び出される仮想関数。 |
|
Byte、の外部での指定されたシーケンスからは何 Byte、を内部 CharType、の特定の値よりも Byte、または仮想関数は. でその数を返します。 |
|
1 CharType内部の生成に必要な外部バイトの最大数を返す仮想関数。 |
|
外部バイトのシーケンスに内部 CharType、のシーケンスを変換するために呼び出される仮想関数。 |
|
Bytes を提供する呼び出しされた仮想関数は状況依存の変換 Byte. で、シーケンスの先頭文字を実行する必要がありました。 |
|
その場合 Byte ストリームのエンコードが状態に依存する場合は、テスト Byte使用すると、生成される CharTypeの比率は上がっていると、この比率の値をかどうかを判定します。 |
|
CharType、. のシーケンスの内部形式に Byte、のシーケンスの外部表現を変換します。 |
|
Byte、の外部での指定されたシーケンスからは何 Byte、内部 CharType、の特定の値よりも Byte、. でその数値を返すかを決定します。 |
|
1 CharType内部の生成に必要な外部 Byte、の最大数を返します。 |
|
外部 Byte、. のシーケンスに内部 CharType、のシーケンスを変換します。 |
|
Byte、. シーケンスの先頭文字を完了するために状況依存の変換で必要とされる外部 Bytes を提供します。 |
必要条件
ヘッダー: <locale>
名前空間: std