Страницы

Поиск по вопросам

четверг, 23 января 2020 г.

Как считать русский текст из utf-8?

#cpp


Работаю в ubuntu. Имеется utf-8 файл, в котором записаны как русские, так и английские
слова. Как корректно считать из него русские слова?

wfstream fin(_fileName);
if (!fin)
    throw std::exception();

wstring nextLine;

while(fin)
    getline(fin, nextLine);

fin.close();


getline() почему-то вообще не видит русских символов и читает только английские
    


Ответы

Ответ 1



Если у Вас файл в UTF-8, то и используйте однобайтовые потоки ввода, а также однобайтовую string: fstream fin(_fileName); if (!fin) throw std::exception(); string nextLine; while(fin) getline(fin, nextLine); fin.close(); Теперь строки у Вас будут читаться корректно. Но это только начало Ваших проблем, а ничуть не их окончание. Как Вы собираетесь дальше работать с полученными данным? std::string это набор символов типа char, и этот класс ничего не знает об UTF-8.

Комментариев нет:

Отправить комментарий