I'm trying to read lines from .txt files, that have been saved as Unicode. That's how i'm doing it:
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);
}
It works fine for files with Latin characters. But for Cyrillic files I get weird symbols instead of spaces and adjacent characters.
For example:
What is in the input file:
Госдеп США осудил нападение на
What I get:
︓осдепР!ШАР>судилР=ападениеР=а
What am I doing wrong?
one line looks very suspicous in your code:
input.seekg(1, ios_base::beg);
it sets file position, so reading utf16 string starting position 1 might be incorrect (BOM is read incorrectly). i have the same result for utf16 file in little endian.
so you might change position to 0 or delete this line in order to make this code work
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With