2013-08-09 1 views
1

Я новичок в MFC, и я не знаю, что делать с этой ошибкой.не может преобразовать параметр 1 из 'const char [6]' в 'const wchar_t *

ОШИБКА

ошибка C2664: 'пустота ATL :: CStringT :: Format (Const wchar_t *, ...)': не удается преобразовать параметр 1 из 'сопзЬ полукокса [6] для 'Const wchar_t *'

Heres линия:

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

ответ

1

По умолчанию, ап для Windows p настроен на использование 16-битных символов, а не 8-битных символов. Измените свою строку с кавычками на L "% d%", чтобы указать строку из 16-разрядных символов.

+2

Два комментария: почти всегда лучше использовать макросы T - так '_T ("% d %% ")'. И одиночный, автономный '%' не является допустимым спецификатором формата. Я считаю, что более новые версии библиотек Microsoft поднимают исключение безопасности во время выполнения, когда они сталкиваются с ним. –

2

Есть 2 различных ошибки с линией коды вы публикуемой:

  1. Строка формата содержит недопустимый спецификатор формата (трейлинг %). Если вы хотите, чтобы строка формата содержала буквенный знак процента, ее нужно экранировать с помощью %%.
  2. Вы используете строковый литерал, который не соответствует требуемой кодировке, то есть несоответствие между кодировкой символов ANSI и UNICODE. Если m_Echo1 имеет тип CString, параметр должен быть обернут внутри макроса _T или TEXT: _T("%d %%"). Если m_Echo1 имеет тип CStringW, параметр должен быть передан как строковый литерал UNICODE, добавив его L: L"%d %%".

Примечание: Сообщение об ошибке, которое вы отправили, не соответствует строке кода. Сообщение об ошибке относится к const char [6], тогда как строковый литерал в вашем коде имеет тип const char [5]. Убедитесь, что сообщения об ошибках и код совпадают.