关于char转换成LPCWSTR的问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于char转换成LPCWSTR的问题相关的知识,希望对你有一定的参考价值。
大家先看看代码:
char buffer[80];
方法一:
wsprintf(buffer,L"WM_CHAR: Character = %c ",ascii_code);
TextOut(hdc, 0,0,(LPCWSTR)buffer, strlen(buffer));
这个只能显示第一个字母“W”
方法二:
sprintf((LPCWSTR)buffer,L"Key State = 0X%X ",key_state);
TextOut(hdc, 0,16,(LPCWSTR)buffer, strlen(buffer));
这个出现的是乱码!
方法三:
sprintf(buffer,L"Key State = 0X%X ",key_state);
TextOut(hdc, 0,16,buffer, strlen(buffer));
这个提示不能将char转换成LPCWSTR
我用的是vs2005,操作系统是win7
查了很多都不知道应该怎么解决。
大家帮帮忙,小弟初学!
在问题发布2分钟后,找到了解决办法,困扰了我一下午啊。。进来者给最佳。
强制类型转换是不行的,因为一个是字符占一个字节,一个事占两个字节,但是sprintf等函数是不知道的 参考技术A USES_CONVERSION;
TextOut(hdc, 0,0,A2W(buffer), strlen(buffer));
用ATL提供的A2W宏 参考技术B
添加头文件#include<tchar.h>
将buffer改成_T(buffer)
2年前的问题了,现在都没搞开发啦。我记得好像是vs2008里面的一个设置问题,关于编码的,其他就忘了。现在电脑上连vs都没有,也无法去找。
error C2440: “=”: 无法从“const char [18]”转换为“LPCWSTR”
错误
error C2440: “=”: 无法从“const char [18]”转换为“LPCWS
解决:
“属性“->"配置属性"->"常规"->"字符集",更改为使用多字符集
以上是关于关于char转换成LPCWSTR的问题的主要内容,如果未能解决你的问题,请参考以下文章
164VS2022下VC++调用CreateFile文件名不能接受char*,包括强制转换成LPCWSTR的char*也会出错
C++,有没有可以将LPCWSTR类型转换成string的简单点的方法?