1

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

错误

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

继承人这一行:

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

2 回答 2

2

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

  1. 格式字符串包含非法格式说明符(尾随%)。如果您希望格式字符串包含文字百分号,则必须使用%%.
  2. 您使用的字符串文字与所需的编码不匹配,即 ANSI 和 UNICODE 字符编码不匹配。如果m_Echo1是类型CString,则必须将参数包装在 a _TorTEXT宏中:_T( "%d %%" )。如果m_Echo1是类型CStringW,则参数必须作为 UNICODE 字符串文字传递,方法是在其前面加上L: L"%d %%"

注意:您发布的错误消息与代码行不匹配。错误消息是指const char [6]代码中的字符串文字类型为const char [5]. 确保错误消息和代码匹配。

于 2013-08-10T13:48:24.970 回答
2

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

于 2013-08-09T23:42:28.460 回答