Как назначить буквальную китайскую строку wchar_t * в Visual Studio (С++)?

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

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

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

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

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

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

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

Спасибо!


person NSA    schedule 17.09.2010    source источник


Ответы (2)


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

const wchar_t* chinese =  L"好久不见";
person GManNickG    schedule 17.09.2010

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

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

person Zain Rizvi    schedule 17.09.2010