"const wchar_t *" 类型的实参与 "LPCSTR" 类型的形参不兼容的原因和解决方法

常见字符类型

  1. 宽字符串字面量L"Wide string literal"属于const wchar_t*,采用UNICODE编码,标准C类型。
  2. 字符串字面量"string literal"属于const char*,采用ANSI编码,标准C类型。
  3. typedef wchar_t WCHAR,定义于winnt.h,是windows扩展的类型别名。
  4. typedef char TCHARtypedef WCHAR TCHAR根据是否定义UNICODE来确定,均定义域winnt.h,是windows扩展类型。

多字节编码和UNICODE

多字节编码和UNICODE编码都可以表达中文字符,前者使用char(一个中文字符占据两个字节,通过一个前导字节来判断,如果一个字节属于基本ASCII则采用ASCII,否则和它后面的字节共同表示一个ANSI字符),后者使用wchar_t。visual studio中默认使用了多字节编码,因此参数形参类型就是基于char的,如果使用了L"string"就会出现类型不兼容,比如 "const wchar_t *" 类型的实参与 "LPCSTR" 类型的形参不兼容
解决办法:项目—>属性—>字符集 修改为UNICODE字符集

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值