Неявное преобразование CString в char * - PullRequest
0 голосов
/ 08 августа 2011

Я скачал пример кода, поэтому в этом коде есть некоторые переменные CString, которые передаются в функцию sscanf () как char *, компилятор неявно преобразует эти CString, и код прекрасно работает. Код, который работает нормально, здесь:

CString m_strVersionXFS;
m_strVersionXFS = _T("00029903");

DWORD nVersion;
sscanf(m_strVersionXFS,"%08X",&nVersion);

проблема здесь, когда я пытался написать свой собственный простой код, который пытается манипулировать переменной CString таким же образом, но компилятор говорит, что не может преобразовать CString в cahr *

1 Ответ

2 голосов
/ 08 августа 2011

Я подозреваю, что ваш собственный код использует юникод (UNICODE константа определена).Это означает, что CString использует широкие символы и неявно преобразуется в wchar_t*, но не в char*.

В этом случае существует три возможных решения:

  1. Используйте swscanf, версию широких символов sscanf (рекомендуется);
  2. Явно используйте CStringA вместо CString, поэтому вы используете ANSI-версию CString;
  3. Измените ваш проект, чтобы использовать многобайтовые символы вместо юникода (это можно сделать из свойств проекта в Visual Studio).
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...