C++编码转换

 1 std::wstring ANSIToUnicode(const std::string& str)
 2 {
 3     int len = MultiByteToWideChar(CP_ACP, 0, str.c_str(), -1, NULL, 0);
 4     std::vector<wchar_t> unicode(len);
 5     MultiByteToWideChar(CP_ACP, 0, str.c_str(), -1, &unicode[0], len);
 6     return std::wstring(&unicode[0]);
 7 }
 8 
 9 std::string UnicodeToANSI(const std::wstring& str)
10 {
11     int len = WideCharToMultiByte(CP_ACP, 0, str.c_str(), -1, NULL, 0, NULL, NULL);
12     std::vector<char> utf8(len);
13     WideCharToMultiByte(CP_ACP, 0, str.c_str(), -1, &utf8[0], len, NULL, NULL);
14 
15     return std::string(&utf8[0]);
16 }
17 
18 std::wstring UTF8ToUnicode(const std::string& str)
19 {
20     int len = MultiByteToWideChar(CP_UTF8, 0, str.c_str(), -1, NULL, 0);
21     std::vector<wchar_t> unicode(len);
22     MultiByteToWideChar(CP_UTF8, 0, str.c_str(), -1, &unicode[0], len);
23     return std::wstring(&unicode[0]);
24 }
25 
26 std::string UnicodeToUTF8(const std::wstring& str)
27 {
28     int len = WideCharToMultiByte(CP_UTF8, 0, str.c_str(), -1, NULL, 0, NULL, NULL);
29     std::vector<char> utf8(len);
30     WideCharToMultiByte(CP_UTF8, 0, str.c_str(), -1, &utf8[0], len, NULL, NULL);
31 
32     return std::string(&utf8[0]);
33 }
34 
35 std::string ANSIToUTF8(const std::string& str)
36 {
37     return UnicodeToUTF8(ANSIToUnicode(str));
38 }
39 
40 std::string UTF8ToANSI(const std::string str)
41 {
42     return UnicodeToANSI(UTF8ToUnicode(str));
43 }

 

posted on 2017-01-11 17:40  dev_ptr  阅读(258)  评论(0)    收藏  举报

导航