C ++: caracteres largos com saída incorreta?
Meu código é basicamente este:
wstring japan = L"日本";
wstring message = L"Welcome! Japan is ";
message += japan;
wprintf(message.c_str());
Estou desejando usar seqüências de caracteres largas, mas não sei como elas são produzidas, então usei o wprintf. Quando executo algo como:
./widestr | hexdump
Os pontos de código hexidecimais criam isso:
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 ? ?
Por que eles estão todos em ordem? Quero dizer, se o wprintf está errado, ainda não entendo por que ele seria produzido em uma ordem confusa tão específica!
editar: endianness ou algo assim? eles parecem girar a cada dois caracteres. Hã.
EDIT 2: Tentei usar o wcout, mas ele gera exatamente os mesmos pontos de código hexidecimais. Esquisito!