共用方式為


codecvt Class

描述物件可做為地區設定 Facet 的樣板類別。 控制項可以在使用的兩個值之間建立序列的轉換程式碼在程式和用來指出的內容的字元序列編碼在程式以外的字元。

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
    可以用來表示轉換中繼狀態在字元表示之間的內部和外部型別。

備註

樣板類別描述可做為 地區設定 Facet的物件,控制項型別 CharType 的值序列和型別 Byte的值序列之間的轉換。 類別 StateType Draw 轉換--在轉換期間,而類別 StateType 物件儲存所有必要的狀態資訊。

內部編碼方式搭配內建的位元組數的表示每一個字元,通常 char 型別或型別 wchar_t。

Excel 物件模型之所有區分地區設定 Facet,靜態物件 id 具有原本儲存的值為零。 第一次嘗試存取其儲存的值。id儲存唯一的正數值。

do_indo_out 的範本版本一定會傳回 codecvt_base::noconv

Standard 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 序列之間轉換。

0he30td8.collapse_all(zh-tw,VS.110).gif建構函式

codecvt

做為地區設定 facet 處理轉換 codecvt 類別之物件的建構函式。

0he30td8.collapse_all(zh-tw,VS.110).gifTypedef

extern_type

指定外部表示使用的配置類型。

intern_type

在內部表示使用的配置類型。

state_type

在內部和外部表示,之間轉換期間用來表示中繼狀態的配置類型。

0he30td8.collapse_all(zh-tw,VS.110).gif成員函式

always_noconv

測試轉換是否不需採取行動。

do_always_noconv

呼叫的虛擬函式測試轉換是否不需採取行動。

do_encoding

測試的虛擬函式,如果 Byte 資料流的編碼方式是狀態相依,在 Bytes 所使用的和座標之間的比例所產生的 CharType是否是常數,而且,如果是,判斷該比例的值。

do_in

呼叫的虛擬函式將內部 Byte的編碼的外部 CharType. 的序列。

do_length

判斷的虛擬函式從外部 Bytes 產生特定序列中有多少 Bytes 不超過內部 CharType的數目和傳回 Bytes. 的該數字。

do_max_length

需外部的位元組數目上限產生內部 CharType的虛擬函式。

do_out

呼叫的虛擬函式將內部 CharType外部的編碼的位元組序列。

do_unshift

呼叫的虛擬函式提供 Bytes 中狀態相依轉換需要完成的 Byte. 序列的最後一個字元。

編碼

測試,如果 Byte 資料流的編碼方式是狀態相依,在 Bytes 所使用的和座標之間的比例所產生的 CharType是否是常數,而且,如果是,判斷該比例的值。

in

轉換 Byte的序列的外部的表示轉換成 CharType. 序列的內部表示。

length

判斷來自外部 Bytes 產生特定序列中有多少 Bytes 不超過內部 CharType的數目和傳回 Bytes. 的該數字。

max_length

傳回必要的外部 Byte的最大數目會產生內部 CharType

out

將內部 CharType的編碼的外部 Byte. 的序列。

unshift

提供任何狀態相依的轉換所需的外部 Byte完成 Bytes. 序列的最後一個字元。

需求

標題: <locale>

命名空間: std

請參閱

參考

在標準 C++ 程式庫中的執行緒安全

其他資源

<locale> 成員