Tôi đang cố gắng đọc các dòng từ các tệp .txt, đã được lưu dưới dạng Unicode. Đó là cách tôi đang làm nó:Làm thế nào để đọc tập tin Unicode Cyrillic trong C++?
wifstream input;
string path = "test.txt";
input.imbue(locale(input.getloc(),
new codecvt_utf16<wchar_t, 0x10ffff, consume_header>));
input.open(path);
if (input.is_open())
{
wstring line;
input.seekg(1 , ios_base::beg);
getline(input, line);
}
Nó hoạt động tốt cho các tập tin với ký tự Latinh. Nhưng đối với các tệp Cyrillic tôi nhận được các ký hiệu lạ thay vì dấu cách và các ký tự liền kề.
Ví dụ:
là gì trong tập tin đầu vào:
Госдеп США осудил нападение на
Những gì tôi nhận được:!
︓осдепР ШАР> судилР = ападениеР = а
Tôi đang làm gì sai?
chắc chắn nó không phải là một vấn đề đầu ra? chỉ vì bạn đang đọc trong unicode không có nghĩa là bạn đang outputting vào một môi trường unicode. –
tôi sẽ loại bỏ dòng này: input.imbue (locale (input.getloc(), codecvt_utf16 mới)); –
duDE
Re "Tôi đang làm gì sai?", Tôi cảm thấy rất giống như được glib và trả lời "Sử dụng thư viện chuẩn C++", bởi vì nó nên làm điều này theo mặc định. Nó không phải là cần thiết để tìm ra cách sử dụng nó cho việc này. Hoặc làm việc xung quanh nó. –