Мой код в основном таков:
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 неверен, я все еще не понимаю, почему он выводится в таком специфическом перемешанном порядке!
редактировать: endianness или что-то в этом роде? они, кажется, меняют каждые два символа. хм.
РЕДАКТИРОВАТЬ 2: я пытался использовать wcout, но он выводит те же самые шестнадцатеричные кодовые точки. Странный!
cout << message << endl
. - person phimuemue   schedule 28.06.2010widestr.cpp:18: error: no match for ‘operator<<’ in ‘std::cout << message‘
, в том числе многие о признаках ostream char или что-то в этом роде. Он не выводит широкую строку! - person John D.   schedule 28.06.2010