Próbuję odczytać linie z plików .txt, które zostały zapisane jako Unicode. To jak ja to robię:Jak czytać cyrylicę w Unicode w 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);
}
To działa dobrze dla plików z alfabetu łacińskiego. Ale dla plików cyrylicą otrzymuję dziwne symbole zamiast spacji i sąsiednich znaków.
Na przykład:
Co znajduje się w pliku wejściowego:
Госдеп amerykański осудил нападение на
Co dostaję:
︓осдепР ШАР> судилР = ападениеР = а
Co robię źle?
czy to nie jest problem z wyjściem? tylko dlatego, że czytasz w unicode, nie oznacza, że przechodzisz do środowiska unicode. –
Chciałbym usunąć tę linię: input.imbue (locale (input.getloc(), new codecvt_utf16)); –
duDE
Re "Co robię źle?", Czuję się bardzo jak bycie glibem i odpowiadanie na "Korzystanie ze standardowej biblioteki C++", ponieważ powinno to robić domyślnie. Nie powinno być konieczne, aby dowiedzieć się, jak go użyć w tym celu. Lub obejść to. –