|
发表于 2018-4-11 20:31:56
|
显示全部楼层
wchar_t 转为 char
使用函数 WideCharToMultiByte(),此函数把宽字符串转换成指定的新的字符串,如ANSI 等,新字符串不必是多字节字符集。
- wchar_t* pwszUnicode = L"Holle"; //wcslen(pwsUnicode)=5
- int iSize;
- char* pszMultiByte;
- //返回接受字符串所需缓冲区的大小,已经包含字符结尾符'\0'
- iSize = WideCharToMultiByte(CP_ACP, 0, pwszUnicode, -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, pwszUnicode, -1, pszMultiByte, iSize, NULL, NULL);
复制代码
char 转为 wchar_t
使用函数 MultiByteToWideChar(),此函数把多字节字符串转换成宽字符串(Unicode),待转换的字符串并不一定是多字节的。
- char* pszMultiByte = "Holle"; //strlen(pwsUnicode)=5
- int iSize;
- wchar_t* pwszUnicode ;
- //返回接受字符串所需缓冲区的大小,已经包含字符结尾符'\0'
- iSize = MultiByteToWideChar(CP_ACP, 0, pszMultiByte , -1, NULL, 0); //iSize =wcslen(pwsUnicode)+1=6
- pwszUnicode = (wchar_t *)malloc(iSize*sizeof(wchar_t)); //不需要 pwszUnicode = (wchar_t *)malloc((iSize+1)*sizeof(wchar_t))
- MultiByteToWideChar(CP_ACP, 0, pszMultiByte , -1, pwszUnicode , iSize);
复制代码 |
|