类模板
<locale>

std::codecvt

template <class internT, class externT, class stateT> class codecvt;
转换编码的 facet

codecvt 标准 facet 在两种不同的字符编码之间进行转换:一种是内部字符类型(通常是某种宽字符类型),另一种是外部字符类型(通常表示多字节序列)。

codecvt 类模板有一个受保护的析构函数:程序应仅构造派生类的对象,或使用安装在 locale 对象中的对象(通过 use_facet)。

所有标准的 locale 对象至少支持 codecvt 类模板的以下 facet 实例化(作为 ctype 类别的一部分)
locale 对象中的 facet描述
codecvt<char,char,mbstate_t>不进行转换
codecvt<wchar_t,char,mbstate_t>在本地宽字符和窄字符集之间进行转换
locale 对象中的 facet描述
codecvt<char,char,mbstate_t>不进行转换
codecvt<wchar_t,char,mbstate_t>在本地宽字符和窄字符集之间进行转换
codecvt<char16_t,char,mbstate_t>在 UTF16 和 UTF8 编码之间进行转换
codecvt<char32_t,char,mbstate_t>在 UTF32 和 UTF8 编码之间进行转换

头文件 <codecvt> 定义了其他派生自 codecvt 的独立 facet 对象(更多信息,请参见头文件 <codecvt>)。

模板参数

internT
内部字符类型:通常是宽字符类型。
别名为成员 intern_type
externT
外部字符类型:通常是多字节类型。
别名为成员 extern_type
stateT
状态类型:通常是一个能够跟踪转换状态的对象,例如 mbstate_t(或更通用地,char_traits<externT>::state_type)。
别名为成员 state_type

成员类型

成员类型定义描述
intern_type第一个模板参数(internT内部字符类型
extern_type第二个模板参数(externT外部字符类型
state_type第三个模板参数(stateT状态类型
该类还继承了 codecvt_base::result,它用作成员 inoutunshift 的返回类型。

成员常量

以下成员常量从 codecvt_base 继承(作为 enum 类型 codecvt_base::result 的标签);它们用作某些成员函数的返回值。
成员常量类型描述
okcodecvt_base::result0转换成功
partialcodecvt_base::result1部分转换
errorcodecvt_base::result2转换错误
noconvcodecvt_base::result3无转换

该类还包含一个公共静态常量,类型为 locale::id,它唯一地标识具有 codecvt 语义的 facet。

公开成员函数


转换函数


字符编码属性


虚保护成员函数

该类定义了虚保护成员,它们通过默认方式实现各自公共成员函数的行为。

以及类析构函数

该类包含一个公共静态常量,类型为 locale::id,它唯一地标识具有 codecvt 语义的 facet。

特化

在所有库实现中,至少提供了以下模板特化
特化
codecvt<char,char,mbstate_t>
codecvt<wchar_t,char,mbstate_t>
特化
codecvt<char,char,mbstate_t>
codecvt<wchar_t,char,mbstate_t>
codecvt<char16_t,char,mbstate_t>
codecvt<char32_t,char,mbstate_t>