首页 > 代码库 > C++11函数转码
C++11函数转码
#include <string> #include <codecvt> using namespace std; // utf8转unicode wstring utf8_to_wstring(const string &str) { wstring_convert<codecvt_utf8<wchar_t>> utf8_cvt; return utf8_cvt.from_bytes(str); } // unicode转utf8 string wstring_to_utf8(const wstring &str) { wstring_convert<codecvt_utf8<wchar_t>> utf8_cvt; return utf8_cvt.to_bytes(str); } // gbk转unicode wstring gbk_to_wstring(const string &str) { wstring_convert<codecvt<wchar_t, char, mbstate_t>> gbk_cvt(new codecvt<wchar_t, char, mbstate_t>("chs")); return gbk_cvt.from_bytes(str); } // unicode转gbk string wstring_to_gbk(const wstring &str) { wstring_convert<codecvt<wchar_t, char, mbstate_t>> gbk_cvt(new codecvt<wchar_t, char, mbstate_t>("chs")); return gbk_cvt.to_bytes(str); } // utf8转gbk string utf8_to_gbk(const string &str) { wstring_convert<codecvt_utf8<wchar_t>> utf8_cvt; // utf8-》unicode转换器 wstring_convert<codecvt<wchar_t, char, mbstate_t>> gbk_cvt(new codecvt<wchar_t, char, mbstate_t>("chs")); // unicode-》gbk转换器 wstring t = utf8_cvt.from_bytes(str); return gbk_cvt.to_bytes(t); } // gbk转utf8 string gbk_to_utf8(const string &str) { wstring_convert<codecvt_utf8<wchar_t>> utf8_cvt; // utf8-》unicode转换器 wstring_convert<codecvt<wchar_t, char, mbstate_t>> gbk_cvt(new codecvt<wchar_t, char, mbstate_t>("chs")); // unicode-》gbk转换器 wstring t = gbk_cvt.from_bytes(str); return utf8_cvt.to_bytes(t); }
int main() { locale::global(locale("")); string u8str = u8"我爱中国 i love china"; string str = "我爱中国 i love china"; wstring w1 = gbk_to_wstring(str); str = wstring_to_gbk(w1); cout << str << endl; wcout << w1 << endl; return 0; }
C++11函数转码
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。