注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

dp: 生活的脚步,进步的点滴...

Cam、DSP、FPGA、PM、Life、More ...

 
 
 

日志

 
 

char*转LPCWSTR解决方案  

2014-10-17 15:12:07|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

在Windows编程中,经常会碰到字符串之间的转换,char*转LPCWSTR也是其中一个比较常见的转换。下面就列出几种比较常用的转换方法。

1、通过MultiByteToWideChar函数转换

    MultiByteToWideChar函数是将多字节转换为宽字节的一个API函数,它的原型如下:

  1. int MultiByteToWideChar(  
  2.   UINT CodePage,         // code page  
  3.   DWORD dwFlags,         // character-type options  
  4.   LPCSTR lpMultiByteStr, // string to map  
  5.   int cbMultiByte,       // number of bytes in string  
  6.   LPWSTR lpWideCharStr,  // wide-character buffer  
  7.   int cchWideChar        // size of buffer  
  8. );  

LPCWSTR实际上也是CONST WCHAR *类型

 

  1. char* szStr = "测试字符串";  
  2. WCHAR wszClassName[256];  
  3. memset(wszClassName,0,sizeof(wszClassName));  
  4. MultiByteToWideChar(CP_ACP,0,szStr,strlen(szStr)+1,wszClassName,  
  5.     sizeof(wszClassName)/sizeof(wszClassName[0]));  


2、通过T2W转换宏

  1. char* szStr = "测试字符串";     
  2. CString str = CString(szStr);  
  3. USES_CONVERSION;  
  4. LPCWSTR wszClassName = new WCHAR[str.GetLength()+1];  
  5. wcscpy((LPTSTR)wszClassName,T2W((LPTSTR)str.GetBuffer(NULL)));  
  6. str.ReleaseBuffer();  


 

3、通过A2CW转换

  1. char* szStr = "测试字符串";     
  2. CString str = CString(szStr);  
  3. USES_CONVERSION;  
  4. LPCWSTR wszClassName = A2CW(W2A(str));  
  5. str.ReleaseBuffer();  


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

  评论这张
 
阅读(373)| 评论(0)
推荐

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016