печать char16_t - PullRequest
       34

печать char16_t

11 голосов
/ 10 апреля 2011

Недавно у меня возникла проблема с переносом приложения Windows на Linux из-за разницы в размерах wchar_t между этими платформами.Я пытался использовать переключатели компилятора, но были проблемы с печатью этих символов (я предполагаю, что GCC wcout считает, что все wchar_t являются 32-битными).

Итак, мой вопрос: есть ли хороший способ(w)cout char16_t?Я спрашиваю, потому что это не работает, я вынужден привести его к wchar_t:

cout << (wchar_t) c;

Это не кажется большой проблемой, но меня это беспокоит.

1 Ответ

2 голосов
/ 11 апреля 2011

Попробуйте:

#include <locale>
#include <codecvt>
#include <string>
#include <iostream>

int main()
{
    std::wstring_convert<std::codecvt_utf8_utf16<wchar_t> > myconv;
    std::wstring ws(L"Your UTF-16 text");
    std::string bs = myconv.to_bytes(ws);
    std::cout << bs << '\n';
}
...