[error] MFC错误不能将参数1从"const char [3]"转换为"const wchar_t *"
2014-02-26 16:57
549 查看
在做项目中经常遇到很多错误,这里我仅仅把自己遇到的一些错误和解决方法写出,供自己和大家查看.
代码如下:
错误提示:
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())
使用时的具体代码方法: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能避免很多字节型错误.
虽然这类文章在百度很多,但我还是想以自己的视角写这类一些列自己遇到的错误的解决方法.最后希望该文章对大家有所帮助.参考资料:http://bbs.csdn.net/topics/380162797
([b]原创By:Eastmount 2014-2-26 下午5点http://blog.csdn.net/eastmount/)[/b]
代码如下:
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能避免很多字节型错误.
虽然这类文章在百度很多,但我还是想以自己的视角写这类一些列自己遇到的错误的解决方法.最后希望该文章对大家有所帮助.参考资料:http://bbs.csdn.net/topics/380162797
([b]原创By:Eastmount 2014-2-26 下午5点http://blog.csdn.net/eastmount/)[/b]
相关文章推荐
- [error] MFC错误不能将参数1从"const char [3]"转换为"const wchar_t *"
- error C2664:"CWnd::MessageBoxW"不能将参数从"const char[3]"转换为"LPCSTR"
- MFC Edit控件 error:“DDX_Control”: 不能将参数 3 从“int”转换为“CWnd &”
- error c2664:"MessageBoxW":不能将参数2从“const char[15]”转换为“LPCWSTR”与指向的类型无关
- MFC Edit控件 error:“DDX_Control”: 不能将参数 3 从“int”转换为“CWnd &”
- MFC项目报错:不能将参数 2 从“const char [18]”转换为“LPCTSTR“
- [解决问题][不能更新eclipse]错误提示:Error retrieving "feature.xml". [error in opening zip file]
- error C2664: “BOOL CDC::TextOutW(int,int,const CString &)”: 不能将参数 3 从“const char [18]”转换为“const CStr
- cvLoadImage 不能将参数1从 "_TCHAR*" 转换为"const char *"
- vc2008错误:不能将参数 1 从“const char [5]”转换为“LPCTSTR”
- error C2664: “BOOL CDC::TextOutW(int,int,const CString &)”: 不能将参数 3 从“const char [18]”转换为“const CStr
- MFC遇到的一个字符集问题:不能将参数1从“const char []”转换为“LPCTSTR”
- 不能将“this”指针从“const Vector3D”转换为“Vector3D &amp;" 错误
- error C2664: “fopen”: 不能将参数 1 从“const char [ ]”转换为“const wchar_t
- 错误:error C2664:不能将参数1从“std::map<_kty,_Ty>”转换为"std::map<_kty,_Ty>"
- Format(const wchar_t *,...)”: 不能将参数 1 从“const char [3]”转换为“const wchar_t *”.
- error C2664: “atoi”: 不能将参数 1 从“CString”转换为“const char *"
- [解决问题][不能更新eclipse]错误提示:Error retrieving "feature.xml". [error in opening zip file]
- vc2008错误:不能将参数 1 从“const char [5]”转换为“LPCTSTR”
- error C2664: “ATL::CStringT<BaseType,StringTraits>::Remove”: 不能将参数 1 从“const char [2]”转换为“char”