codecvt 类

一种模板类,此模板类描述可用作区域设置 facet 的对象。 此模板类能够控制用于对程序中和程序外的字符进行编码的值序列之间的转换。

template<class CharType, class Byte, class StateType>
    class codecvt : public locale::facet, codecvt_base;

参数

  • CharType
    在程序中用于对字符进行编码的类型。

  • Byte
    用于对程序外的字符进行编码的类型。

  • StateType
    一种类型,此类型可用于表示字符表示形式的内部和外部类型之间转换的中间状态。

备注

此模板类描述可用作区域设置 facet 的对象,此对象用于控制 CharType 类型的值序列和 Byte 类型的值序列之间的转换。 StateType 类描述转换,StateType 类的对象存储转换期间的任何必要状态信息。

内部编码使用每个字符都包含固定字节数的表示形式,通常为 char 类型或 wchar_t 类型。

对于任何区域设置 facet,静态对象 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 (UCS-4) 编码的 char32_t 序列和按 UTF-8 编码的 char 序列之间转换。

构造函数

codecvt

用作区域设置 facet 以处理转换的 codecvt 类的对象的构造函数。

Typedef

extern_type

用于外部表示形式的字符类型。

intern_type

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

state_type

一种字符类型,此类型用于表示内部和外部表示形式进行转换期间的中间状态。

成员函数

always_noconv

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

do_always_noconv

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

do_encoding

测试 Byte 流的编码是否依赖于状态、使用的 Byte 数和生成的 CharType 数之间的比率是否一致(如果是,则确定此比率的值)的虚拟函数。

do_in

为将内部 Byte 序列转换为外部 CharType 序列而调用的虚拟函数。

do_length

确定给定外部 Byte 序列中有多少 Byte 生成的内部 CharType 不超过给定数量并返回此 Byte 数的虚拟函数。

do_max_length

返回生成一个内部 CharType 所需的最大外部字节数的虚拟函数。

do_out

为将内部 CharType 序列转换为外部字节序列而调用的虚拟函数。

do_unshift

一种虚拟函数,通过调用此函数可提供依赖于状态的转换中需要的 Byte 以完成 Byte 序列中的最后一个字符。

encoding

测试 Byte 流的编码是否依赖于状态、使用的 Byte 数和生成的 CharType 数之间的比率是否一致(如果是,则确定此比率的值)。

in

Byte 序列的外部表示形式转换为 CharType 序列的内部表示形式。

length

确定给定外部 Byte 序列中有多少 Byte 生成的内部 CharType 不超过给定数量,并返回此 Byte 数。

max_length

返回生成一个内部 CharType 所需的最大外部 Byte 数。

out

将内部 CharType 序列转换为外部 Byte 序列。

unshift

提供依赖于状态的转换中需要的外部 Byte 以完成 Byte 序列中的最后一个字符。

要求

标头:<locale>

命名空间: std

请参见

参考

<locale>

代码页

区域设置名称、语言和国家/地区字符串

C++ 标准库中的线程安全