Mein Code ist im Grunde diese:C++: breite Zeichenausgabe falsch?
wstring japan = L"日本";
wstring message = L"Welcome! Japan is ";
message += japan;
wprintf(message.c_str());
Ich wünsche Wide-Strings zu verwenden, aber ich weiß nicht, wie sie ausgegeben sind, so habe ich wprintf. Wenn ich etwas laufen wie:
./widestr | hexdump
Die hexadezimale Codepoints erstellen Diesen:
65 57 63 6c 6d 6f 21 65 4a 20 70 61 6e 61 69 20 20 73 3f 3f
e W c l m o ! e J p a n a i s ? ?
Warum sind sie alle, um gesprungen? Ich meine, wenn der wprintf falsch ist, verstehe ich immer noch nicht, warum er in so einer bestimmten Reihenfolge ausgegeben wurde!
edit: endianess oder sowas? Sie scheinen jeweils zwei Charaktere zu drehen. huh.
EDIT 2: Ich habe versucht, wcout, aber es gibt die exakt gleichen hexadezimalen Codepoints. Seltsam!
Vielleicht sollten Sie 'cout << Nachricht << endl versuchen. – phimuemue
@phimuemue, Es funktioniert nicht, es sendet mir etwa 30 Fehler, erstens 'widestr.cpp: 18: Fehler: keine Übereinstimmung für 'Operator <<' in 'std :: cout << Nachricht', einschließlich viele über ostream char Merkmale oder etwas, Es wird nicht die breite Zeichenfolge ausgeben! –
Welche Plattform und welchen Compiler benutzen Sie? – hlovdal