Печать char16_t
Недавно у меня возникла проблема с переносом приложения Windows в Linux из-за разницы в размере wchar_t
между этими платформами. Я пытался использовать компиляторы, но были проблемы с печатью этих символов (я полагаю, что GCC wcout
считает, что все wchar_t
32 бит).
Итак, мой вопрос: есть ли хороший способ (w)cout
char16_t
? Я спрашиваю, потому что это не работает, я вынужден передать его wchar_t
:
cout << (wchar_t) c;
Это не похоже на большую проблему, но меня это беспокоит.
Ответы
Ответ 1
Попробуйте:
#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';
}