Как я могу распечатать (cout
/ wcout
/ …) char32_t для консоли в C ++ 11?
Следующий код печатает шестнадцатеричные значения:
u32string s2 = U"Добрый день";
for(auto x:s2){
wcout<<(char32_t)x<<endl;
}
Во-первых, я не думаю 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 в этом отношении довольно сломана. Увидеть этот мой ответ и перейдите по ссылке (ссылкам) в нем.
Других решений пока нет …