类模板
<locale>

std::codecvt_byname

template <class internT, class externT, class stateT> class codecvt_byname;
转换代码集的 facet

codecvt_byname 标准 facet 重写了 codecvt 的虚成员函数,以实现针对特定命名区域的语义。

其公共接口与 codecvt 相同,只是构造函数多了一个 std_name 参数。

1
explicit codecvt_byname (const char* std_name, size_t refs = 0);
1
2
explicit codecvt_byname (const char* std_name, size_t refs = 0);
explicit codecvt_byname (const string& std_name, size_t refs = 0);

其中 std_name 是一个C locale 的名称。可用的C locales 取决于系统和库实现,但至少以下几种保证在所有实现中都存在:
区域设置名称描述
"C"最小的“C”区域(与 locale::classic 相同)
""环境的默认区域

特化

所有库实现都至少提供了此模板的以下特化:
特化
codecvt_byname<char,char,mbstate_t>
codecvt_byname<wchar_t,char,mbstate_t>
特化
codecvt_byname<char,char,mbstate_t>
codecvt_byname<wchar_t,char,mbstate_t>
codecvt_byname<char16_t,char,mbstate_t>
codecvt_byname<char32_t,char,mbstate_t>