Mfc 无法将参数1从';常量字符[6]';至';康斯特沃克哈特酒店*

Mfc 无法将参数1从';常量字符[6]';至';康斯特沃克哈特酒店*,mfc,cstring,Mfc,Cstring,我是MFC的新手,不知道如何处理这个错误 错误 错误C2664:'void ATL::CStringT::Format(const wchar_t*,…)':无法将参数1从“常量字符[6]”转换为 “const wchar\u t*” 这是一行: m_Echo1.Format("%d %",state.dwMemoryLoad); 默认情况下,Windows应用程序设置为使用16位字符,而不是8位字符。将带引号的字符串更改为L“%d%”,以指定由16位字符组成的字符串。默认情况下,Window

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

错误

错误C2664:'void ATL::CStringT::Format(const wchar_t*,…)':无法将参数1从“常量字符[6]”转换为 “const wchar\u t*”

这是一行:

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

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

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

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

  • 格式字符串包含非法的格式说明符(尾随
    %
    )。如果希望格式字符串包含文字百分比符号,则必须使用
    %%
    对其进行转义
  • 您使用的字符串文字与所需编码不匹配,即ANSI和UNICODE字符编码不匹配。如果
    m_Echo1
    CString
    类型,则必须将参数包装在
    \u T
    文本
    宏中:
    \u T(“%d%%”)
    。如果
    m_Echo1
    的类型为
    CStringW
    ,则必须通过在参数前面加上
    L
    L“%d%%”
    将其作为UNICODE字符串文本传递

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

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

  • 格式字符串包含非法的格式说明符(尾随
    %
    )。如果希望格式字符串包含文字百分比符号,则必须使用
    %%
    对其进行转义
  • 您使用的字符串文字与所需编码不匹配,即ANSI和UNICODE字符编码不匹配。如果
    m_Echo1
    CString
    类型,则必须将参数包装在
    \u T
    文本
    宏中:
    \u T(“%d%%”)
    。如果
    m_Echo1
    的类型为
    CStringW
    ,则必须通过在参数前面加上
    L
    L“%d%%”
    将其作为UNICODE字符串文本传递

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

    两条注释:使用T宏几乎总是更好的-因此
    \u T(“%d%%”)
    。单个独立的
    %
    不是有效的格式说明符。我相信较新版本的Microsoft库在运行时遇到安全异常时会引发安全异常。两个注释:使用T宏几乎总是更好的—因此
    \u T(“%d%%”)
    。单个独立的
    %
    不是有效的格式说明符。我相信新版本的Microsoft库在运行时遇到安全异常时会引发安全异常。