Il mio codice è fondamentalmente questo:C++: caratteri larghi che escono in modo errato?
wstring japan = L"日本";
wstring message = L"Welcome! Japan is ";
message += japan;
wprintf(message.c_str());
sto che desiderano utilizzare ampi archi, ma non so come stanno emessi, così ho usato wprintf. Quando eseguo qualcosa come:
./widestr | hexdump
I Codepoints esadecimali creare questo:
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 ? ?
Perché sono tutti saltati in ordine? Voglio dire, se il wprintf è sbagliato, non capisco perché abbia prodotto un ordine così disordinato!
modifica: endianness o qualcosa del genere? sembrano ruotare ogni due personaggi. eh.
MODIFICA 2: Ho provato a utilizzare wcout, ma restituisce esattamente gli stessi esadecimali codepoint. Strano!
Forse dovresti provare "cout << messaggio << endl'. – phimuemue
@phimuemue, Non funziona, mi invia all'incirca 30 errori, in primo luogo 'widestr.cpp: 18: errore: nessuna corrispondenza per 'operatore <<' in 'std :: cout << messaggio'', compresi molti su tratti di ostream char o qualcosa del genere, non emetterà la stringa larga! –
Che piattaforma e compilatore stai usando? – hlovdal