Мой код в основном это: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 ошибается, я все равно не понимаю, почему он выдавал бы в таком определенном беспорядочном порядке!
Редактировать: endianness или еще что-то? они, похоже, вращают каждый два символа. да.
EDIT 2: Я попытался использовать wcout, но он выводит точно такие же шестнадцатеричные кодовые точки. Weird!
Возможно, вам стоит попробовать 'cout << message << endl'. – phimuemue
@phimuemue, он не работает, он отправляет мне примерно 30 ошибок, сначала «widestr.cpp: 18: ошибка: нет соответствия для« operator << »в 'std :: cout << message'', включая многие из них ostream черт характера или что-то в этом роде, он не будет выводить широкую строку! –
Какую платформу и компилятор вы используете? – hlovdal