error C2664: 'void ATL::CStringT::Format (...)

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

这个错误即是当我们用

CString str;
str.Format(....)

 

的时候出现的,这个还是一个编码问题...

VS2010中,编写MFC应用程序时,项目->属性-配置属性-常规-字符集-多字节字符集  解决问题

VC2005及更高版本默认使用Unicode字符集,CString里存的是宽字符,也就是wchar_t,而不再是char。


也可以使用

strDate.Format(_T("%4d-%2d-%2d"),st.wYear,st.wMonth,st.wDay);
strTime.Format(_T("%4d:%2d:%2d"),st.wHour,st.wMinute,st.wSecond);

_T _TEXT 宏可适应 UNICODE 和非UNICODE 环境

定义字符串变量,不要用char*,而用TCHAR*。所有字符串常量,不要直接用"",而要用_T("")。举个例子:
TCHAR* str = _T( "Hello, World" );
MessageBox( _T( "Hello" ));

 

 

你可能感兴趣的:(error C2664: 'void ATL::CStringT::Format (...))