Как назначить буквенную китайскую строку для wchar_t * в visual studio (c ++)? - PullRequest
1 голос
/ 17 сентября 2010

Я пытаюсь скомпилировать следующий код в моем тестовом приложении для Windows в Visual Studio для C ++:

const wchar_t* chinese = "好久不见";

Но я получаю следующую ошибку:

ошибка C2440: «инициализация»: невозможно преобразовать из «const char [5]» в «const wchar_t *

Я компилирую с юникодом, поэтому меня это смущает. Ошибка исчезнет, ​​если я приведу литерал следующим образом:

const wchar_t* chinese = (wchar_t*)"好久不见";

Я не уверен, что это безопасно, и я действительно не хочу этого делать, так как я могу это исправить.

Спасибо!

Ответы [ 2 ]

13 голосов
/ 17 сентября 2010

Требуется широкий строковый литерал, поэтому добавьте префикс строкового литерала к L:

const wchar_t* chinese =  L"好久不见";
1 голос
/ 17 сентября 2010

Как сказал GMan, добавьте в строку префикс «L».L идентифицирует строку как широкий тип символа (wchar_t).

const wchar_t* chinese = L"好久不见";

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...