類模板
<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>