无法将参数1从'const char [6]'转换为'const wchar_t *

时间:2013-08-09 20:34:54

标签: mfc cstring

我是MFC的新手,我不知道如何处理这个错误。

错误

  

错误C2664:'void ATL :: CStringT :: Format(const   wchar_t *,...)':无法将参数1从'const char [6]'转换为   'const wchar_t *'

继承人:

m_Echo1.Format("%d %",state.dwMemoryLoad);

2 个答案:

答案 0 :(得分:2)

您发布的代码行有两个明显的错误:

  1. 格式字符串包含非法格式说明符(尾随%)。如果您希望格式字符串包含文字百分号,则必须使用%%对其进行转义。
  2. 您使用的字符串文字与所需的编码不匹配,即ANSI和UNICODE字符编码不匹配。如果m_Echo1的类型为CString,则参数必须包含在_TTEXT宏中:_T( "%d %%" )。如果m_Echo1的类型为CStringW,则必须将参数作为UNICODE字符串文字传递,方法是将其添加到LL"%d %%"
  3. 注意:您发布的错误消息与代码行不匹配。错误消息引用const char [6],而代码中的字符串文字属于const char [5]类型。确保错误消息和代码匹配。

答案 1 :(得分:1)

默认情况下,Windows应用程序设置为使用16位字符,而不是8位字符。将引用的字符串更改为L“%d%”以指定16位字符的字符串。