600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > (3条消息)[error] MFC错误不能将参数1从“const char [3]”转换为"const wchar

(3条消息)[error] MFC错误不能将参数1从“const char [3]”转换为"const wchar

时间:2022-12-29 16:36:13

相关推荐

(3条消息)[error] MFC错误不能将参数1从“const char [3]”转换为"const wchar

在做项目中经常遇到很多错误,这里我仅仅把自己遇到的一些错误和解决方法写出,供自己和大家查看.

代码如下:

CRect rect;

GetClientRect(&rect);

CString str;

str.Format("%ld",rect.bottom);

MessageBox(str);

错误提示:

error C2664: “void ATL::CStringT<BaseType,StringTraits>::Format(const wchar_t *,...)”: 不能将参数 1 从“const char [3]”转换为“const wchar_t *”.

解决方案:

1.由于VS默认字符集为UNICODE,可以使用_T("")宏,让程序支持Unicode编码.定义于tchar.h.(详见百科:_T())

/* Generic text macros to be used with string literals and character constants.

Will also allow symbolic constants that resolve to same. */

#define _T(x) __T(x)

#define _TEXT(x) __T(x)

使用时的具体代码方法:str.Format(_T("%ld"),rect.bottom);

注意我在使用:str.Format(_T("%ld %ld %d %d",rect.left,rect.top,rect.Height(),rect.Width()));会提示warning:_T()实参太多,而且对应的数据也是错误的.故应修改成str.Format(_T("%ld %ld %d %d"),rect.left,rect.top,rect.Height(),rect.Width());正确.

2.同时也可以把工程设置多字节集.

设置步骤:调试->XXX项目 属性->配置属性->常规->字符集->使用多字节集.但建议使用Unicode能避免很多字节型错误.

虽然这类文章在百度很多,但我还是想以自己的视角写这类一些列自己遇到的错误的解决方法.最后希望该文章对大家有所帮助.参考资料:/topics/380162797

(原创By:Eastmount -2-26 下午5点/eastmount/)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。