char* 转 LPCWSTR 解决方案

来源:互联网 发布:为什么淘宝搜不到店铺 编辑:程序博客网 时间:2024/05/16 17:49

在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 *类型


charszStr = "测试字符串";  

WCHAR wszClassName[256];  

memset(wszClassName,0,sizeof(wszClassName));  

MultiByteToWideChar(CP_ACP,0,szStr,strlen(szStr)+1,wszClassName,  

sizeof(wszClassName)/sizeof(wszClassName[0]));


2、通过 T2W 转换宏


charszStr = "测试字符串";    

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 转换


charszStr = "测试字符串";    

CString str = CString(szStr);  

USES_CONVERSION;  

LPCWSTR wszClassName = A2CW(W2A(str));  

str.ReleaseBuffer();


上述方法都是UniCode环境下测试的。

0 0