Ausgabe von Unicode-Zeichenfolgen in der Windows-Konsolen-App

Hallo, ich habe versucht, eine Unicode-Zeichenfolge auf einer Konsole mit auszugebeniostreams und scheiterte.

Ich habe das gefunden:Verwenden der Unicode-Schriftart in der C ++ - Konsolenanwendung und dieses schnipsel funktioniert.

SetConsoleOutputCP(CP_UTF8);
wchar_t s[] = L"èéøÞǽлљΣæča";
int bufferSize = WideCharToMultiByte(CP_UTF8, 0, s, -1, NULL, 0, NULL, NULL);
char* m = new char[bufferSize]; 
WideCharToMultiByte(CP_UTF8, 0, s, -1, m, bufferSize, NULL, NULL);
wprintf(L"%S", m);

Ich habe jedoch keine Möglichkeit gefunden, Unicode mit iostreams korrekt auszugeben. Irgendwelche Vorschläge?

Das funktioniert nicht:

SetConsoleOutputCP(CP_UTF8);
utf8_locale = locale(old_locale,new boost::program_options::detail::utf8_codecvt_facet());
wcout.imbue(utf8_locale);
wcout << L"¡Hola!" << endl;

BEARBEITEN Ich konnte keine andere Lösung finden, als dieses Snippet in einen Stream zu packen. Hoffe, jemand hat bessere Ideen.

//Unicode output for a Windows console 
ostream &operator-(ostream &stream, const wchar_t *s) 
{ 
    int bufSize = WideCharToMultiByte(CP_UTF8, 0, s, -1, NULL, 0, NULL, NULL);
    char *buf = new char[bufSize];
    WideCharToMultiByte(CP_UTF8, 0, s, -1, buf, bufSize, NULL, NULL);
    wprintf(L"%S", buf);
    delete[] buf; 
    return stream; 
} 

ostream &operator-(ostream &stream, const wstring &s) 
{ 
    stream - s.c_str();
    return stream; 
} 

Antworten auf die Frage(11)

Ihre Antwort auf die Frage