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

1、通过MultiByteToWideChar函数转换

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

[cpp] view plain copy print?
  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. );
int MultiByteToWideChar(UINT CodePage,         // code pageDWORD dwFlags,         // character-type optionsLPCSTR lpMultiByteStr, // string to mapint cbMultiByte,       // number of bytes in stringLPWSTR lpWideCharStr,  // wide-character bufferint cchWideChar        // size of buffer
);

LPCWSTR实际上也是CONST WCHAR *类型

[cpp] view plain copy print?
  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]));
         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 plain copy print?
  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();
         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 plain copy print?
  1. char* szStr = "测试字符串";
  2. CString str = CString(szStr);
  3. USES_CONVERSION;
  4. LPCWSTR wszClassName = A2CW(W2A(str));
  5. str.ReleaseBuffer();
 char* szStr = "测试字符串";    CString str = CString(szStr);USES_CONVERSION;LPCWSTR wszClassName = A2CW(W2A(str));str.ReleaseBuffer();

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

char* 转 LPCWSTR 解决方案相关推荐

  1. C++ Error C2664:无法将参数 1 从“const char [9]”转换为“LPCWSTR”解决方案

    C++ Error C2664:无法将参数 1 从"const char [9]"转换为"LPCWSTR"解决方案 参考文章: (1)C++ Error C26 ...

  2. CString 、Char*与LPCWSTR类型转换解决方案

    [原文出处]: https://blog.csdn.net/zhouxuguang236/article/details/8761497 https://blog.csdn.net/sl159/art ...

  3. char 类型与lpcwstr_C++中char*转换为LPCWSTR的解决方案

    前言 大家在学习或者使用Windows编程中,经常会碰到字符串之间的转换,char*转LPCWSTR也是其中一个比较常见的转换.下面就列出几种比较常用的转换方法.大家可以根据自己的需求选择相对应的方法 ...

  4. C++ char*转LPCWSTR

    C++ char*转LPCWSTR 该解决方案源自https://blog.csdn.net/zhouxuguang236/article/details/8761497 首先头文件要导入 #incl ...

  5. 不能将参数 2 从“const char *”转换为“LPCWSTR”【转】http://blog.sina.com.cn/s/blog_4a94a0db0100ktxp.html...

    : 不能将参数 2 从"const char *"转换为"LPCWSTR" 在VS2008下使用MFC编程遇到错误:        error C2664: & ...

  6. 不能从const char *转换为LPCWSTR --VS经常碰到

    不能从const char *转换为LPCWSTR 在VC 6.0中编译成功的项目在VS2005 vs2005.vs2008.vs2010中常会出现类型错误. 经常出现的错误是:不能从const ch ...

  7. char*转LPCWSTR Unicode编码

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

  8. 从“char []”转换为“LPCWSTR” 指向的类型无关

    转自:http://zhidao.baidu.com/link?url=NnGhrj0LAE9WTJl-soYjaRuk2sBHAtXoBZ85KjJpeIE0TS86-CMoqXCPSKslcTW8 ...

  9. vs2013 无法将参数 1从“const char *”转换为“LPCWSTR” 解决办法

    LPCWSTR L 后面的P是一个长的指针(以前16位windows时有短的,现在都是长的) P 这是一个指针 C 指向的是const型 W 指向的是宽字符(unicode) STR 这是一个字符串 ...

最新文章

  1. python使用for循环打印99乘法表-Python用for循环实现九九乘法表
  2. jQuery 3.1.1 官方下载地址
  3. JVM - ZGC初探
  4. UGUI 自动布局的重叠BUG
  5. elasticsearch 启动、停止及更改密码
  6. 前端安全 -- XSS攻击
  7. codevs1080线段树练习
  8. K-means 聚类算法的图像区域分割
  9. python脚本——Excel处理
  10. 数据挖掘之数据仓库详述
  11. GitHup使用指南——安装及上传
  12. 《 PHP+H5全栈工程师培训项目实战》
  13. 火箭是这样连胜的(转载)
  14. 用Python实时获取steam特惠游戏数据
  15. 小牛电动Q2财报:国外不乐观,国内狂下沉
  16. 在URL中实现简易的WebAPI验签
  17. 小程序源码:头像挂件工坊DIY工具
  18. crontab:设置计时器
  19. idea 启动项目突然间 java.lang.OutOfMemoryError: Java heap space
  20. 机器学习实践——支持向量机

热门文章

  1. 对话GPT-3 —— 一次有趣的采访(视频)
  2. mysql admin 修改密码_mysql修改密码的三种方式
  3. linux 进程几种状态,linux进程状态
  4. Oracle19c手动巨干净卸载,可以重新安装了
  5. UML基础(四)--顺序图
  6. 浅谈物联网中的信息安全
  7. 查询剩余火车票(ZT)
  8. Java毕设项目桌游店会员管理系统(java+VUE+Mybatis+Maven+Mysql)
  9. (直线、折现、封闭曲线)分割平面公式
  10. 布谷鸟设置(如果有什么问题可以看这里)