解决方法1:修改工程属性,项目属性->高级->字符集->使用Unicode字符集改为未设置。
解决方法2:处理字符串类型,将char类型的数组改为TCHAR,在字符串赋值给LPCWSTR前加L,或TEXT。

在网上查找资料时,遇到一些老一些的代码在如今的VS2017或者2019上经常会遇到这样的问题,其本质原因是微软对字符集版本的支持变化,过去微软只遵从ANSI标准,随着字符集的变化,为了兼容性,微软如今支持ANSI和Unicode两种格式字符,且vs2005以后编码方式默认为Unicode,部分函数默认调用Unicode方式(函数名+W,exp:MessageBox+W=MessageBoxW),而非ANSI方式(函数名+A,exp:MessageBox+A=MessageBoxA),所以过去编译成功的代码如今可能会出现一些问题。

TCHAR、char

因为C++支持两种字符串,即常规的ANSI编码(使用"“包裹)和Unicode编码(使用L”“包裹),这样对应的就有了两套字符串处理函数,比如:strlen和wcslen,分别用于处理两种字符串。
微软将这两套字符集及其操作进行了统一,通过条件编译(通过_UNICODE和UNICODE宏)控制实际使用的字符集,这样就有了_T(”")这样的字符串,对应的就有了_tcslen这样的函数。
为了存储这样的通用字符,就有了TCHAR:
当没有定义_UNICODE宏时,TCHAR = char,_tcslen =strlen
当定义了_UNICODE宏时,TCHAR = wchar_t , _tcslen = wcslen
当我们定义了UNICODE宏,就相当于告诉了编译器:我准备采用UNICODE版本。这个时候,TCHAR就会摇身一变,变成了wchar_t。而未定义UNICODE宏时,TCHAR摇身一变,变成了unsignedchar。这样就可以很好的切换宽窄字符集。
tchar可用于双字节字符串,使程序可以用于中日韩等国 语言文字处理、显示。使编程方法简化。

C++编程直观理解如下:

#include<iostream>
#include<Windows.h>
using namespace std;
int main() {TCHAR a = 'a';char b = 'b';cout << sizeof(a) << endl << sizeof(b)<<endl;}

输出结果:

可以直观看出TCHAR类型即较长的char类型。

LPCWSTR

LPCWSTR是一个指向unicode编码字符串的32位指针,所指向字符串是wchar型,而不是char型。

char *无法转换为LPCWSTR问题相关推荐

  1. VS2010 不能将参数 2 从“char [20]”转换为“LPCWSTR”的错误解决

    1.VS2010报错 1>d:\users\yangtse\documents\visual studio 20010\projects\winmain\winmain\54.cpp(27) : ...

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

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

  3. VC2010 [转]解决char *无法转换为LPCWSTR问题

    本文转自:http://blog.csdn.net/sennyrong/article/details/6975603 过去微软只遵循ANSI标准,而现在为了兼容.跨平台,从VS2005后,微软工程默 ...

  4. MFC中关于char[]转换成LPCWSTR的问题

    在写Win32应用程序时候,你可能遭遇到如下错误 : error C2664: 'LoadImageW' : cannot convert parameter 2 from 'char [20]' t ...

  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. 无法从“const char [10]”转换为“char *”

    无法从"const char [10]"转换为"char *" 解决方法: 项目属性  c++--> 语言-->  符合模式->> 选择 ...

  8. [error] MFC错误不能将参数1从const char [3]转换为const wchar_t *

    在做项目中经常遇到很多错误,这里我仅仅把自己遇到的一些错误和解决方法写出,供自己和大家查看. 代码如下: CRect rect; GetClientRect(&rect); CString s ...

  9. error记录 | 不能将参数 1 从“const char [5]”转换为“LPCTSTR

    Windows使用两种字符集ANSI和UNICODE,前者就是通常使用的单字节方式,但这种方式处理象中文这样的双字节字符不方便,容易出现半个汉字的情况.而后者是双字节方式,方便处理双字节字符.Wind ...

最新文章

  1. formRef=React.createRef() this.formRef.current为null
  2. 宜信开源|数据库审核软件Themis的规则解析与部署攻略
  3. sql语句中 时间数值转换为时间格式函数
  4. 题目1104:整除问题
  5. 菜鸟春招启动:面向全球毕业生开放八类岗位 超8成是物流运营人员
  6. 逆天语言模型GPT-2最新开源:345M预训练模型和1.5B参数都来了
  7. Java 并发编程 --- ThreadPoolExecutor(五)
  8. 麦克风阵列能干这么多事你知道吗?
  9. VM两个虚拟机之间的通讯测试
  10. paip.提升用户检验--------取回密码-忘记密码提醒
  11. 详解什么是BT种子、迅雷下载链接、磁力链接
  12. 特殊IP地址分类:私有地址、保留地址
  13. r语言 聚类求和_R语言聚类分析(示例代码)
  14. zotero word 调整样式 上标
  15. 微信小程序实现全局登陆状态
  16. 如何将QQ群文件快速下载,怎么快速下载QQ中的文件,QQ群文件下载
  17. 墨哥视角,微软大八系,能大发么?(一)——surface
  18. Composer中的ThingWorx模型定义—建模
  19. [翻译练习] Node interview of ElemeFE OS
  20. 怎么关闭Windows7显示器校准?

热门文章

  1. java除法保留n位有效位
  2. Ti的C28x系列的DSP(28069)(28377)使用经验,ADC经验
  3. Mac开机后键盘和触控板失灵
  4. Live800:服务经济时代,企业如何满足客户需求?
  5. java 买票_java 简单买票系统
  6. 【附源码】Java计算机毕业设计面向企业人力资源管理网上智能考勤系统(程序+LW+部署)
  7. [附源码]计算机毕业设计Python共享汽车系统(程序+源码+LW文档)
  8. m4r是什么文件格式?m4r怎么转成mp3?
  9. JUC-13. JMM
  10. iPhone 4行货尚远 水货暴利2千元