您的位置:首页 > 其它

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: