C ++: вывод широких символов неправильно?

Мой код в основном это:

wstring japan = L"日本";
wstring message = L"Welcome! Japan is ";

message += japan;

wprintf(message.c_str());

Я хочу использовать широкие строки, но я не знаю, как они выводятся, поэтому я использовал wprintf. Когда я запускаю что-то вроде:

./widestr | hexdump

Шестнадцатеричные кодовые точки создают это:

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  ?  ?

Почему они все в порядке? Я имею в виду, что если wprintf не так, я все еще не понимаю, почему он выводил бы в таком конкретном беспорядочном порядке!

редактировать: порядковый номер или что-то? кажется, они вращают каждые два символа. да.

РЕДАКТИРОВАТЬ 2: я пытался использовать wcout, но он выводит точно такие же шестнадцатеричные кодовые точки. Weird!

Ответы на вопрос(1)

Ваш ответ на вопрос