版权声明:原创作品请注明出处: Ma_Hong_Kai CSDN https://blog.csdn.net/Ma_Hong_Kai/article/details/84579166
1、需要转换的字符串
默认为的 WCHAR *str;
//
// UNICODE (Wide Character) types
//
#ifndef _MAC
typedef wchar_t WCHAR; // wc, 16-bit UNICODE character
#else
上述代码来自: WinNT.h
可以看到该字符串的编码格式为,unicode 的宽字节编码,而且是16位(比特)的,意思就是这是个 两字节的unicode编码
2、转换的目标字符串类型 char
char:单个字符(8位),即一个字节
WCHAR* serverName = " 。。。。。";
int iSize;
char* pszMultiByte;
//返回接受字符串所需缓冲区的大小,已经包含字符结尾符'\0'
iSize = WideCharToMultiByte(CP_ACP, 0, serverName, -1, NULL, 0, NULL, NULL);
//iSize =wcslen(pwsUnicode)+1=6
pszMultiByte = (char*)malloc(iSize*sizeof(char)); //不需要 pszMultiByte = (char*)malloc(iSize*sizeof(char)+1);
WideCharToMultiByte(CP_ACP, 0, serverName, -1, pszMultiByte, iSize, NULL, NULL);
free(pszMultiByte);