C++中char*转换为LPCWSTR的解决方案
发布时间:2020-12-16 05:14:59 所属栏目:百科 来源:网络整理
导读:前言 大家在学习或者使用Windows编程中,经常会碰到字符串之间的转换,char*转LPCWSTR也是其中一个比较常见的转换。下面就列出几种比较常用的转换方法。大家可以根据自己的需求选择相对应的方法,下面来一起学习学习吧。 1、通过MultiByteToWideChar函数转换
前言 大家在学习或者使用Windows编程中,经常会碰到字符串之间的转换,char*转LPCWSTR也是其中一个比较常见的转换。下面就列出几种比较常用的转换方法。大家可以根据自己的需求选择相对应的方法,下面来一起学习学习吧。 1、通过MultiByteToWideChar函数转换 MultiByteToWideChar函数是将多字节转换为宽字节的一个API函数,它的原型如下: 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 *类型 char* szStr = "测试字符串"; WCHAR wszClassName[256]; memset(wszClassName,sizeof(wszClassName)); MultiByteToWideChar(CP_ACP,szStr,strlen(szStr)+1,wszClassName,sizeof(wszClassName)/sizeof(wszClassName[0])); 2、通过T2W转换宏 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转换 char* szStr = "测试字符串"; CString str = CString(szStr); USES_CONVERSION; LPCWSTR wszClassName = A2CW(W2A(str)); str.ReleaseBuffer(); 上述方法都是UniCode环境下测试的。 总结 以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |