Mã của tôi là về cơ bản này:C++: ký tự rộng xuất hiện không chính xác?
wstring japan = L"日本";
wstring message = L"Welcome! Japan is ";
message += japan;
wprintf(message.c_str());
Tôi đang có nhu cầu sử dụng chuỗi rộng nhưng tôi không biết làm thế nào họ đang outputted, vì vậy tôi sử dụng wprintf. Khi tôi chạy một cái gì đó như:
./widestr | hexdump
Các codepoints hexidecimal tạo này:
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 ? ?
Tại sao tất cả họ đều nhảy theo thứ tự? Tôi có nghĩa là nếu wprintf là sai tôi vẫn không nhận được lý do tại sao nó sẽ đầu ra trong một thứ tự xáo trộn cụ thể như vậy!
chỉnh sửa: endianness hoặc gì đó? họ dường như xoay mỗi hai nhân vật. Huh.
CHỈNH SỬA 2: Tôi đã thử sử dụng wcout, nhưng kết quả đầu ra chính xác cùng một điểm thập lục phân. Kỳ dị!
Có thể bạn nên thử 'cout << message << endl'. – phimuemue
@phimuemue, Nó không hoạt động, nó gửi cho tôi khoảng 30 lỗi, đầu tiên là 'widestr.cpp: 18: lỗi: không khớp cho 'toán tử <<' trong 'std :: cout << message'', bao gồm nhiều đặc điểm ostream char hoặc một cái gì đó, Nó sẽ không sản xuất chuỗi rộng! –
Bạn đang sử dụng nền tảng và trình biên dịch nào? – hlovdal