在VC++开发中,经常会用到string和wstring,这就需要二者之间的转换,项目中封装了wstring和string相互转换的2个函数,实现如下:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44 |
//将wstring转换成stringstd::string ConvertWStringToAnsi(std::wstring wstr){ std::string result; int
len = WideCharToMultiByte(CP_ACP, 0, wstr.c_str(), wstr.size(), NULL, 0, NULL, NULL); if( len <= 0 ) return
result; char* buffer = new
char[len + 1]; if(buffer == NULL ) return
result; WideCharToMultiByte(CP_ACP, 0, wstr.c_str(), wstr.size(), buffer, len, NULL, NULL); buffer[len] = ‘\0‘; //字符串断尾 result.append(buffer); //赋值 delete[] buffer; //删除缓冲区 //返回值 return
result;}//将string转换成wstringstd::wstring ConvertAnsiToWString(std::string str){ std::wstring result; int
len = MultiByteToWideChar(CP_ACP, 0, str.c_str(), str.size(), NULL, 0); if( len < 0 ) return
result; wchar_t* buffer = new
wchar_t[len + 1]; if( buffer == NULL ) return
result; MultiByteToWideChar(CP_ACP, 0, str.c_str(), str.size(), buffer, len); buffer[len] = ‘\0‘; //字符串断尾 result.append(buffer); //赋值 delete[] buffer; //删除缓冲区 //返回值 return
result;} |
原文:http://www.cnblogs.com/JczmDeveloper/p/3527189.html