1.利用c++11新特性 std::wstring_convert配合std::codecvt模板类
作者:Gomo Psivarh
链接:https://www.zhihu.com/question/39186934/answer/80443490
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
链接:https://www.zhihu.com/question/39186934/answer/80443490
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
这两个模板类的功能是:
std::wstring_convert:转码器,接收一个类似codecvt描述编码转换特性的模板参数,用于将本地化的宽字符wstring和指定编码的字节化string进行互转。
std::codecvt:编码转换特性类,用在wstring_convert的模板参数中来指定使用哪种编码。
std::wstring_convert:转码器,接收一个类似codecvt描述编码转换特性的模板参数,用于将本地化的宽字符wstring和指定编码的字节化string进行互转。
std::codecvt:编码转换特性类,用在wstring_convert的模板参数中来指定使用哪种编码。
所以编码A和B互转的实现方式就是:借助本地化宽字符串,先将以A编码的string转为本地化的wstring,再将本地化的wstring转为B编码后的string。
codecvt一般使用下面两个特化子类:
std::codecvt_utf8<wchar_t>:用于UTF8和本地化wchar_t的互转
std::codecvt_byname<wchat_t, char, std::mbstate_t>:用于其他编码(例如GBK)和本地化wchar_t的互转,类的构造函数需要传入编码的locale name,由于编码的locale name是