VC++中 wstring和string的互相转换实现
在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转换成string std::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转换成wstring std::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; } |
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。