char*转LPCWSTR解决方案
2015-08-12 11:46
302 查看
在Windows编程中,经常会碰到字符串之间的转换,char*转LPCWSTR也是其中一个比较常见的转换。下面就列出几种比较常用的转换方法。
1、通过MultiByteToWideChar函数转换
MultiByteToWideChar函数是将多字节转换为宽字节的一个API函数,它的原型如下:
[cpp] view
plaincopy
int MultiByteToWideChar(
UINT CodePage, // code page
DWORD dwFlags, // character-type options
LPCSTR lpMultiByteStr, // string to map
int cbMultiByte, // number of bytes in string
LPWSTR lpWideCharStr, // wide-character buffer
int cchWideChar // size of buffer
);
LPCWSTR实际上也是CONST WCHAR *类型
[cpp] view
plaincopy
char* szStr = "测试字符串";
WCHAR wszClassName[256];
memset(wszClassName,0,sizeof(wszClassName));
MultiByteToWideChar(CP_ACP,0,szStr,strlen(szStr)+1,wszClassName,
sizeof(wszClassName)/sizeof(wszClassName[0]));
2、通过T2W转换宏
[cpp] view
plaincopy
char* szStr = "测试字符串";
CString str = CString(szStr);
USES_CONVERSION;
LPCWSTR wszClassName = new WCHAR[str.GetLength()+1];
wcscpy((LPTSTR)wszClassName,T2W((LPTSTR)str.GetBuffer(NULL)));
str.ReleaseBuffer();
3、通过A2CW转换
[cpp] view
plaincopy
char* szStr = "测试字符串";
CString str = CString(szStr);
USES_CONVERSION;
LPCWSTR wszClassName = A2CW(W2A(str));
str.ReleaseBuffer();
上述方法都是UniCode环境下测试的。
原作者链接
/article/1633209.html
1、通过MultiByteToWideChar函数转换
MultiByteToWideChar函数是将多字节转换为宽字节的一个API函数,它的原型如下:
[cpp] view
plaincopy
int MultiByteToWideChar(
UINT CodePage, // code page
DWORD dwFlags, // character-type options
LPCSTR lpMultiByteStr, // string to map
int cbMultiByte, // number of bytes in string
LPWSTR lpWideCharStr, // wide-character buffer
int cchWideChar // size of buffer
);
LPCWSTR实际上也是CONST WCHAR *类型
[cpp] view
plaincopy
char* szStr = "测试字符串";
WCHAR wszClassName[256];
memset(wszClassName,0,sizeof(wszClassName));
MultiByteToWideChar(CP_ACP,0,szStr,strlen(szStr)+1,wszClassName,
sizeof(wszClassName)/sizeof(wszClassName[0]));
2、通过T2W转换宏
[cpp] view
plaincopy
char* szStr = "测试字符串";
CString str = CString(szStr);
USES_CONVERSION;
LPCWSTR wszClassName = new WCHAR[str.GetLength()+1];
wcscpy((LPTSTR)wszClassName,T2W((LPTSTR)str.GetBuffer(NULL)));
str.ReleaseBuffer();
3、通过A2CW转换
[cpp] view
plaincopy
char* szStr = "测试字符串";
CString str = CString(szStr);
USES_CONVERSION;
LPCWSTR wszClassName = A2CW(W2A(str));
str.ReleaseBuffer();
上述方法都是UniCode环境下测试的。
原作者链接
/article/1633209.html
相关文章推荐
- swift UI特殊培训38 与滚动码ScrollView
- SSH私钥取消密码(passphrase )
- 负载均衡基础(经常使用)算法
- 流量统计
- C语言位运算详解
- HDU - 3874 Necklace (线段树 + 离线处理)
- view not attached to windows manager与This Toast was not created with Toast.makeText()
- RequiredFieldValidator控件验证不能为空时报错多种解决方法以及问题分析
- PHP+Ajax+Mysql邮箱找回密码
- Shader LOD
- 【转载】Fragment中通过回调获得实现Activity中的onTouchEvent函数
- 使用@RestController,@ExceptionHandler和@Valid,把检验和异常处理从主要业务逻辑里面抽离出来
- leetCode #58 Length of Last Word
- 【HDU】5370 Tree Maker 【树dp】
- 记录每天的收获与总结
- vcxproj文件和vcxproj.filters文件冲突 解决
- ntp时间服务器以及虚拟机同步网络时间
- jsvc将tomcat配置成服务
- 软件架构设计应该考虑的问题(优秀)
- 手机信号强度