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_indo_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 序列之间的转换。

0he30td8.collapse_all(zh-cn,VS.110).gif构造函数

codecvt

用作区域设置方面处理转换选件类 codecvt 对象的构造函数。

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

extern_type

为外部表示使用的字符类型。

intern_type

为内部表示形式使用的字符类型。

state_type

在内部和外部表示之间的转换过程,用于表示元状态的字符类型。

0he30td8.collapse_all(zh-cn,VS.110).gif成员函数

always_noconv

测试转换是否不需要完成。

do_always_noconv

调用虚函数测试转换是否不需要完成。

do_encoding

测试的虚函数,如果 Byte 流的编码是状态依赖项,在 Bytes和使用的比值生成的 CharType是否是常数,并且,如果是这样,确定该比率的值。

do_in

调用虚函数转换内部 Byte按顺序为外部 CharTypes.序列。

do_length

确定的虚函数从外部 Byte的生成特定顺序的多少 Byte的不超过内部 CharType中的许多和返回 Bytes.的该数字。

do_max_length

返回必要的外部字节的最大数量生成内部 CharType的虚函数。

do_out

调用虚函数转换内部 CharType按顺序为外部字节序列。

do_unshift

调用虚函数提供 Byte的一个状态相关的转换需要完成 Bytes.序列中的最后一个字符。

编码

测试,则 Byte 流的编码是状态依赖项,在 Bytes和使用的比值生成的 CharType是否是常数,并且,如果是这样,确定该比率的值。

in

转换 Byte按顺序的外部表示为 CharTypes.序列的内部表示形式。

length

确定从外部 Byte的生成特定顺序的多少 Byte的不超过内部 CharType中的许多和返回 Bytes.的该数字。

max_length

返回必要的外部 Byte中的最大数目生成内部 CharType

out

将内部 CharType按顺序为外部 Bytes.序列。

unshift

提供了一个状态相关的转换的需要的外部 Byte完成 Bytes.序列中的最后一个字符。

要求

标头: <locale>

命名空间: std

请参见

参考

线程安全性对标准C++库中

其他资源

locale 成员