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

多字符集转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
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值