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 }
相关文章推荐
- 多种设计模式核心思想对比
- Qt学习 之 多线程程序设计(QT通过三种形式提供了对线程的支持)
- 美好生活
- 抽象工厂模式 c#
- MyBatis Generator产生的Example类
- JDK配置步骤
- 24. Swap Nodes in Pairs
- 2015’12杭电校赛1005 Bitwise Equations(二进制找规律)
- QT5下获取本机IP地址、计算机名、网络连接名、MAC地址、子网掩码、广播地址
- HDU 1024 Max Sum Plus Plus (若干子区间求解最大值)
- Service与Android系统实现(1)-- 应用程序里的Service
- 树莓派错误“No space left on device”
- Bootstrap导航元素
- 6.学习操作系统之设备管理
- IOS开发中 类、对象、实例变量、成员变量、属性变量等区别和关系
- 二维最大类间方差(otsu)matlab实现源码
- 一句话木马上传常见的几种方法
- 仿函数应用详解
- 几种大数据框架的对比
- iPhone手机的屏幕尺寸、分辨率及适配