您的位置:首页 > 其它

unicode WCHAR 与多字符集char相互转换

2016-01-06 22:11 519 查看
多字符集转UNICODE字符集:

//mbs(char) to wcs (CString)
//多字符集转为UNICODE字符集
CString mbs2wcs(LPCSTR mbstr)
{
CString cstr = L"";
size_t aLen = strlen(mbstr) + 1;
int wLen = MultiByteToWideChar(CP_ACP, 0, mbstr, aLen, NULL, 0);//最后一个参数为0,先计算出转化所需的宽字符数
LPOLESTR lpw = new WCHAR[wLen];	//再申请(返回的宽字符数)个缓冲区
MultiByteToWideChar(CP_ACP, 0, mbstr, aLen, lpw,wLen);	//将多字符集转换到WCHAR的缓冲区
cstr.Append(lpw);	//将缓冲区的内容追加到cstr,待返回
delete[] lpw;		//释放缓冲区内存
lpw = NULL;			//将缓冲区指针设置为空
return cstr;
}
UNICODE字符集转Multi字符集:

/************************************************************************/
/*
UNICODE字符集转多字符集 char

*/
/************************************************************************/
VOID wcs2mbs(LPCOLESTR wcstr, char* chResult)
{
size_t wLen = wcslen(wcstr) + 1;  // 宽字符字符长度,+1表示包含字符串结束符
int aLen = WideCharToMultiByte(CP_ACP, 0, wcstr, wLen, NULL, 0, NULL, NULL); //第六个参数为0,返回转换所需的char型字符数

LPSTR lpa = new char[aLen];	//申请缓冲区
WideCharToMultiByte(CP_ACP, 0, wcstr, wLen, lpa, aLen, NULL, NULL);	//将UNICODE字符集转换到char型缓冲区
strcpy_s(chResult, 200, lpa);	//内存拷贝
delete[] lpa;		//释放缓冲区内存
lpa = NULL;		//缓冲区内存指针设置为null
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: