我的代码基本上是这样的:
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,但它输出完全相同的十六进制代码点。奇怪!
cout << message << endl
。 - phimuemuewidestr.cpp:18: error: no match for ‘operator<<’ in ‘std::cout << message‘
,还包括许多关于ostream字符特性或其他内容的错误,它无法输出宽字符串! - John D.