標籤:oca 轉碼 end lob class wchar_t clu out main
#include <string>#include <codecvt>using namespace std;// utf8轉unicodewstring utf8_to_wstring(const string &str){ wstring_convert<codecvt_utf8<wchar_t>> utf8_cvt; return utf8_cvt.from_bytes(str);}// unicode轉utf8string wstring_to_utf8(const wstring &str){ wstring_convert<codecvt_utf8<wchar_t>> utf8_cvt; return utf8_cvt.to_bytes(str);}// gbk轉unicodewstring 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轉gbkstring 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轉gbkstring 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轉utf8string 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函數轉碼