lpcwstr与char类型不匹配(LPCWSTR无法转换char)

本文目录
- LPCWSTR无法转换char
- const char *“ 类型的实参与 “LPCWSTR“ 类型的形参不兼容
- 到 LPCWSTR 的类型不兼容,这是怎么回事啊
- VS2012中出现“const char*”类型的实参与“LPCWSTR”类型的形参不兼容,怎么办
- LPWSTR和char*是什么关系,这段代码求解决问题
- VC++ LPWSTR类型的实参与char*类型的形参不兼容
- 在vs中char类型的实参与LPCWSTR类型的形参类型不兼容怎么解决
LPCWSTR无法转换char
1e:\vs2008\实验\实验\c.cpp(28) : error C2440: “=”: 无法从“const char ”转换为“LPCWSTR”1 与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换1e:\vs2008\实验\实验\c.cpp(74) : error C2146: 语法错误 : 缺少“)”(在标识符“,”的前面)1e:\vs2008\实验\实验\c.cpp(74) : error C2660: “MessageBoxW”: 函数不接受 2 个参数1e:\vs2008\实验\实验\c.cpp(74) : error C2059: 语法错误 : “)”1e:\vs2008\实验\实验\c.cpp(80) : error C2664: “PostQuitMessage”: 不能将参数 1 从“HWND”转换为“int”1 没有使该转换得以执行的上下文1e:\vs2008\实验\实验\c.cpp(83) : error C3861: “DelWindowProc”: 找不到标识符1生成日志保存在“file://e:\vs2008\实验\实验\Debug\BuildLog.htm”1实验 - 13 个错误,0 个警告========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========补充:
const char *“ 类型的实参与 “LPCWSTR“ 类型的形参不兼容
修改如下:把工程属性 -》 配置属性 -》常规 -》 字符集 的“使用unicode字符集“改为“使用多字节字符集”。
到 LPCWSTR 的类型不兼容,这是怎么回事啊
开头#include 《TCHAR.h》
sprintf(...)
改为
_stprintf(...)
然后所有双引号字符串或单引号的字符
"Mouse Clicking" ’A’
这样的都改为
_T("Mouse Clicking") _T(’A’)
所有
char
改为
TCHAR
原因在于字符(串)实际上有char(*)(LPSTR,LPCSTR)和wchar_t(*)(LPWSTR,LPCWSTR)两种类型,这两种类型有各自的一套字符串操作函数(包括基础库、windowsAPI等都是),而windows程序通常会默认使用wchar_t系列,因此所有字符串都需要wchar_t*类型,所有函数都用wchar_t匹配的函数。
而_T()则是自动将字符串转换为对应类型的字符串,_stprintf函数(实际上是宏)会自动匹配应有的函数(char匹配sprintf,wchar_t匹配swprintf)
事实上所有涉及字符串的函数大多都是三个一组的,比如图中涉及的有:
sprintf,swprintf,_stprintf
MessageBoxA,MessageBoxW,MessageBox
……
三个函数依次为:char专用函数,wchar_t专用函数,变化匹配函数(虽设置环境自动匹配char或wchar_t)
VS2012中出现“const char*”类型的实参与“LPCWSTR”类型的形参不兼容,怎么办
在字符串前面加上一个大写的L就OK了~
MessageBox(hWnd,L"鼠标左键按下",L"提示",1);
LPWSTR和char*是什么关系,这段代码求解决问题
这是UNICODE的问题, vc里项目“属性-》常规-》字符集”这个选项控制是使用unicode还是多字节, unicode对应的就是LPWSTR, 16位, 多字节就是char, 8位。 LPWSTR的最终宣告是unsigned short, 可见是16位的。MFC里有一个很容易的unicode转ansi的宏, USES_CONVERSION, 通过W2A就可以把LPWSTR转换为char*
VC++ LPWSTR类型的实参与char*类型的形参不兼容
在UNICODE字符集下,CString存储方式是WCHAR宽字节。
如果你的加密算法始终要求char模式,那么放弃使用CString直接使用char* 就可以了。
如果无法避免宽字节字符串,那么安全的办法是通过WideCharToMultiByte函数,将UNICODE字符串转换为宽字节的char*在进行DES加密。
变通的办法(存在字符串转换的隐患)是直接将WCHAR通过内存复制方式给char*进行加密,复制长度为:ytr.GetLength()*sizeof(TCHAR)
在vs中char类型的实参与LPCWSTR类型的形参类型不兼容怎么解决
LPCWSTR是宽字符集,每个字符占两个字节运歼键
char西旁巧文占一个字节,中文改历占两个字节
如果想完全搞清楚这个问题, 会自己转换,去好好学一下unicode

更多文章:
html网页模板(网页制作设计模板-旅游网页该如何设计模板)
2025年9月29日 04:45
this love歌词taylor(求Taylor Swift的Love Story的歌词的中文翻译~)
2025年6月19日 16:30
span标签有内容却不显示(定义一个CSS,但是只有DIV可以显示出来,span等都无法显示)
2026年7月29日 21:00
void sort是什么意思(请各位说说void sort里的算法是什么意思)
2025年6月20日 00:15
学电脑软件开发哪个学校好(电脑软件开发去什么学校学习比较好)
2026年8月16日 18:45
subject都有什么意思(“subject ”是什么意思)
2026年8月15日 06:00
莫奈的网络解释莫奈的网络解释是什么?莫奈的解释莫奈的解释是什么
2025年7月29日 02:00
网页模板停用不能上报怎么办(请教一下,关于网页模板显示不出来的问题~~)
2025年10月22日 22:45
dateadd函数的语法参数(在VB6.0中,DateAdd函数中,用“w“,“y“与“d“,我怎么感觉都一样呀,都是天)
2026年2月21日 15:30
springfestival用in oron(the Spring Festival前用in还是on)
2026年8月28日 02:45
acquaintance歌曲(新年快乐英文歌除了happy new year还有那些)
2026年4月19日 03:15
constantly continuously(constantly怎么读)
2025年8月8日 18:15









