1 std::string& MsgFieldList::GBToUTF8(std::string& des,const char* str) 2 { 3 WCHAR *strSrc; 4 TCHAR *szRes; 5 6 //获得临时变量的大小 7 int i = MultiByteToWideChar(CP_ACP, 0, str, -1, NULL, 0); 8 strSrc = new WCHAR[i+1]; 9 MultiByteToWideChar(CP_ACP, 0, str, -1, strSrc, i); 10 11 //获得临时变量的大小 12 i = WideCharToMultiByte(CP_UTF8, 0, strSrc, -1, NULL, 0, NULL, NULL); 13 szRes = new TCHAR[i+1]; 14 int j=WideCharToMultiByte(CP_UTF8, 0, strSrc, -1, szRes, i, NULL, NULL); 15 16 des = szRes; 17 delete []strSrc; 18 delete []szRes; 19 20 return des; 21 }
反转代码:
1 std::string& MsgFieldList::UTF8ToGB(std::string& des,const char* str) 2 { 3 WCHAR *strSrc; 4 TCHAR *szRes; 5 6 //获得临时变量的大小 7 int i = MultiByteToWideChar(CP_UTF8, 0, str, -1, NULL, 0); 8 strSrc = new WCHAR[i+1]; 9 MultiByteToWideChar(CP_UTF8, 0, str, -1, strSrc, i); 10 11 //获得临时变量的大小 12 i = WideCharToMultiByte(CP_ACP, 0, strSrc, -1, NULL, 0, NULL, NULL); 13 szRes = new TCHAR[i+1]; 14 WideCharToMultiByte(CP_ACP, 0, strSrc, -1, szRes, i, NULL, NULL); 15 16 des = szRes; 17 delete []strSrc; 18 delete []szRes; 19 20 return des; 21 }