Распечатать char32_t на консоль

Как я могу распечатать (cout / wcout / …) char32_t для консоли в C ++ 11?

Следующий код печатает шестнадцатеричные значения:

u32string s2 = U"Добрый день";
for(auto x:s2){
wcout<<(char32_t)x<<endl;
}

1

Решение

Во-первых, я не думаю wcout должен печатать как символы что-нибудь, кроме char а также wchar_t, char32_t это ни то, ни другое

Вот пример программы, которая печатает отдельные wchar_t's:

#include <iostream>

using namespace std;

int main()
{
wcout << (wchar_t)0x41 << endl;
return 0;
}

Выход (ideone):

A

В настоящее время невозможно получить согласованный вывод Unicode в консоли даже в основных ОС. Упрощенный вывод текста Unicode через cout, wcout, printf(), wprintf() и тому подобное не будет работать на Windows без серьезных взломов. Проблема получения читаемого текста Unicode в консоли Windows заключается в том, чтобы иметь возможность выбирать правильные шрифты Unicode. Консоль Windows в этом отношении довольно сломана. Увидеть этот мой ответ и перейдите по ссылке (ссылкам) в нем.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]