转码续(WCHAR 字符串和 char )

版权声明:原创作品请注明出处: 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);

猜你喜欢

转载自blog.csdn.net/Ma_Hong_Kai/article/details/84579166