1.字符串转换为宽字符
下面代码中使用了USES_CONVERSION 是因为会用到A2W来将CString类型的字符串转换为LPCWCH类型,所以必选要先引用USES_CONVERSION
主要使用的函数为WideCharToMultiByte()函数。
CString strPayload = "记得好好学习呀";
char chPayload[500]; //保证数组长度足够长
//WideCharToMultiByte 该函数可以映射一个unicode字符串到一个多字节字符串,执行转换的代码页、接收转换字符串、允许额外的控制等操作。
USES_CONVERSION;
//CP_UTF8表示使用utf-8字符集,为了防止中文乱码 可根据需要自行修改
int len = WideCharToMultiByte(CP_UTF8,0, A2W(strPayload),strPayload.GetLength(),NULL,0,NULL,NULL);
WideCharToMultiByte(CP_UTF8,0, A2W(strPayload),strPayload.GetLength()+1,chPayload,len+1,NULL,NULL);
chPayload[len+1]='\0'; //表示结尾
2.宽字符数组转字符串
主要使用的函数为MultiByteToWideChar()函数。
char* payloadptr = NULL;
payloadptr = (char*)message->payload; //给payloadptr 赋值
int len = MultiByteToWideChar(CP_UTF8, 0, payloadptr, strlen(payloadptr), NULL, 0);
//len是接收到待转换字符串的缓冲区所需求的宽字符数大小
if (len>0)
{
CString reciverstr = "";
reciverstr = payloadptr; //reciverstr 即为转换好的字符串
}