Задать вопрос
@iwanerhov
Программист С/C++

Как считывать(работа с потоками) из файла только русские слова?

Для парсинга текста, мне нужно считывать только русские слова. Как "настроить" поток к примеру stringstream, чтобы он к примеру считывал только русские слова или только английские. .imbue что-то не работает...
  • Вопрос задан
  • 2405 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 4
@mamkaololosha
stringstream это просто класс, который описан в спецификации языка с определенным функционалом. Если разработчик определенного компилятора под какую-нибудь ОС посчитает, что нужно добавить поддержку какого-либо не-ASCII-языка, то это уже будет костыль и некросплатформность кода. Так что такие вещи нужно либо под платформу искать, либо надеяться, что в С11-14 что-то такое стандартизируют.
Ответ написан
donkaban
@donkaban
Умею рисовать тени
Никак. Придумайте предикат "это русское слово" и фильтруйте поток.
Сам предикат - либо "содержит только русские буквы", либо "есть в словаре".
Ответ написан
Комментировать
@MiiNiPaa
Что вы подразумеваете под "imbue не работает".

Как вы читаете слова?
Если используете оператор>>, то в принципе достаточно поменять ctype facet в используемой локали на свой, где латинские буквы будут считаться пробельными символами (и возможно придётся заставить понимать русские буквы как буквы) и обычный оператор извлечения из потока будет считывать только последовательности из русских букв.
Правда нужно быть осторожным с кодировками.

Пример программы:
ideone.com/Es7fs1
coliru.stacked-crooked.com/a/8c32c9870ca5aafc
Ответ написан
Комментировать
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы