error C2664: “void ATL::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t>>>::Format(UIN
rror C2664: “void ATL::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t>>>::Format(UINT,…)”: 无法将参数 1 从“const char [36]”转换为“const wchar_t *”
报错原因
还有一点需要读者注意的是,宽字符不等于Unicode,Unicode 是宽字符编码的一种,只不过最常见的宽字符编码方式就是Unicode了,UTF-16和UTF-32都是Unicode编码。wchar_t也主要以这两种方式实现。VS工程默认是unicode宽字符版本。要求参数是宽字符,我们给的是窄字符字符。
解决方法一:
将字符转换为宽字符
用L 或者_T
代码
CString strMsg; strMsg.Format(L"Value:%d", m_Begin); MessageBox(strMsg);
改为
CString strMsg;
strMsg.Format(_T(“Value:%d”), m_Begin);
MessageBox(strMsg);