C++ - Как преобразовать строку в wchar_t (кириллицу)

Мне нужно преобразовать string в wchar_t. Я пробовал много разных подходов, но у меня по-прежнему возникают проблемы с кириллическим текстом. При использовании wcout для отладки я продолжаю получать неверный вывод, но при использовании только латинских символов проблем не возникает.

Итак, как я могу преобразовать string, содержащий символы кириллицы, в wchar_t?

upd: Я нашел проблему, я сделал ошибку, когда использовал wcout для отладки, я все время получал неправильный вывод. Но я вручную перепроверил коды символов, и это действительно UTF-16. Я не знаю, как сделать правильный вывод UTF-16 в консоль через wcout, но для меня это не так важно.


person Dmitriy Nikulin    schedule 01.07.2016    source источник
comment
Зачем вам wchar_t в Linux? Что не так с UTF-8?   -  person Cody Gray    schedule 01.07.2016
comment
у меня есть внешняя библиотека, которая использует wchar_t в качестве входных параметров.   -  person Dmitriy Nikulin    schedule 01.07.2016
comment
Я не эксперт по C++, но не согласен, что это плохой вопрос. Вопрос совершенно ясен: как мне правильно преобразовать один тип в другой.   -  person Joeytje50    schedule 01.07.2016
comment
Что вы пробовали? Вы пытались создать std::wstring из строки, а затем перейти к wchar_t?   -  person Thomas Matthews    schedule 01.07.2016
comment
Не могли бы вы добавить код к вопросу?   -  person Garland    schedule 01.07.2016


Ответы (1)


Во-первых, вам также нужно знать размер wchar_t, который требуется для этой библиотеки. В разных системах это может быть 16 или 32 бита. Затем вы можете использовать std::wstring_convert::from_bytes. Этот ответ SO также может быть полезен для ты.

person mvidelgauz    schedule 01.07.2016
comment
Я пробовал это раньше, но был тот же результат. Но теперь я нашел свою ошибку, и это работает для меня, спасибо. - person Dmitriy Nikulin; 02.07.2016