在vs中char类型的实参与LPCWSTR类型的形参类型不兼容怎么解决?

在vs中char类型的实参与LPCWSTR类型的形参类型不兼容怎么解决?,第1张

解决方法一:\x0d\x0a通常手动输入的字符串都是const char*(即LPCSTR)类型的,因此只需将该句中的MessageBox改为MessageBoxA即可。\x0d\x0a解决方法二:\x0d\x0a参数使用“_T”宏:\x0d\x0aMessageBox(NULL,_T("Open image failed!"),_T("error"),MB_OK)\x0d\x0a或是:\x0d\x0aMessageBox(NULL, L"Openimage failed!", L"error",MB_OK)\x0d\x0a/*\x0d\x0a************************************************************************************************************************************************\x0d\x0a* 当工程是Unicode编码时,_T将括号内的字符串以Unicode方式保存;当工程是多字节编码时,_T将括号内的字符串以ANSI方式保存\x0d\x0a* 关键字“L”,则是不管编码环境是什么,都是将其后面的字符串以Unicode方式保存。\x0d\x0a*************************************************************************************************************************************************\x0d\x0a*/\x0d\x0a1、用THCAR代替char\x0d\x0a2、字符串加_T(""),如_T("你好")\x0d\x0a3、用_tcscpy等代替strcpy等\x0d\x0aANSI *** 作函数以str开头,如strcpy(),strcat(),strlen();\x0d\x0aUnicode *** 作函数以wcs开头,如wcscpy,wcscpy(),wcslen();\x0d\x0aANSI/Unicode互为兼容的 *** 作函数以_tcs开裂慧头 _tcscpy(C运行期库);\x0d\x0aANSI/Unicode互为兼容的肆册答 *** 作函数以lstr开头 lstrcpy(Windows函数);\x0d\x0a考虑ANSI和Unicode的兼容姿迹,需要使用以_tcs开头或lstr开头的通用字符串 *** 作函数。\x0d\x0a\x0d\x0a最后加上头文件 #include

解决方法一:

通常手动输入的字符串都是const char*(即LPCSTR)类型的,因此只需将该句中的MessageBox改为MessageBoxA即可。

解决方法二:

参数使用“_T”宏:

MessageBox(NULL,_T("Open image failed!"),_T("error"),MB_OK)

或是:

MessageBox(NULL, L"Openimage failed!", L"error",MB_OK)

/*

************************************************************************************************************************************************

* 当工程是Unicode编码时烂神,_T将括号内的字符串以Unicode方式保存;当工程是多字节编码时,_T将括号内的字符串以ANSI方式保存

* 关键字“L”,则是不管编码环境是什么,都是敬凳将其后面的字符串以Unicode方式保存。

*************************************************************************************************************************************************

*/

1、用THCAR代替char

2、字符串加_T(""),如_T("你好")

3、用_tcscpy等代替strcpy等

ANSI *** 作函数以str开头,如strcpy(),strcat(),strlen();

Unicode *** 作函数以wcs开头,如wcscpy,wcscpy(),wcslen();

ANSI/Unicode互为兼容的 *** 作函数以_tcs开头 _tcscpy(C运行期库);

ANSI/Unicode互为兼容的 *** 作函数以lstr开头 lstrcpy(Windows函数);

考虑ANSI和Unicode的兼容,需要使用饥稿亏以_tcs开头或lstr开头的通用字符串 *** 作函数。

最后加上头文件 #include <tchar.h>

世界上有widechartomultibyte和widechartomultibyte两个燃野卜函数

强制类型转换是不行的,因为一个脊改是字符占一个字节,一个事占两皮穗个字节,但是sprintf等函数是不知道的


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12229709.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-22
下一篇 2023-05-22

发表评论

登录后才能评论

评论列表(0条)

保存