关于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分钟后,找到了解决办法,困扰了我一下午啊。。进来者给最佳。

世界上有widechartomultibyte和widechartomultibyte两个函数
强制类型转换是不行的,因为一个是字符占一个字节,一个事占两个字节,但是sprintf等函数是不知道的
参考技术A USES_CONVERSION;

TextOut(hdc, 0,0,A2W(buffer), strlen(buffer));

用ATL提供的A2W宏
参考技术B

    添加头文件#include<tchar.h>

    将buffer改成_T(buffer)

参考技术C 求楼主告知怎么解决,我也在为这个蛋疼。1326360798@qq.com。谢谢追问

2年前的问题了,现在都没搞开发啦。我记得好像是vs2008里面的一个设置问题,关于编码的,其他就忘了。现在电脑上连vs都没有,也无法去找。

error C2440: “=”: 无法从“const char [18]”转换为“LPCWSTR”

错误

error C2440: “=”: 无法从“const char [18]”转换为“LPCWS

解决:

“属性“->"配置属性"->"常规"->"字符集",更改为使用多字符集


以上是关于关于char转换成LPCWSTR的问题的主要内容,如果未能解决你的问题,请参考以下文章

164VS2022下VC++调用CreateFile文件名不能接受char*,包括强制转换成LPCWSTR的char*也会出错

LPCWSTR 和char数组的转换

C++,有没有可以将LPCWSTR类型转换成string的简单点的方法?

QString与LPCWSTR 带中文的相互转换

请问一些关于char类型数据转换成16进制的问题!! 以及移位操作符~ 拜托了~~~~~

关于unsigned char 型数据转换成十进制或者16进制的问题