В
Все
М
Математика
О
ОБЖ
У
Українська мова
Х
Химия
Д
Другие предметы
Н
Немецкий язык
Б
Беларуская мова
М
Музыка
Э
Экономика
Ф
Физика
Б
Биология
О
Окружающий мир
У
Українська література
Р
Русский язык
Ф
Французский язык
П
Психология
О
Обществознание
А
Алгебра
М
МХК
Г
География
И
Информатика
П
Право
А
Английский язык
Г
Геометрия
Қ
Қазақ тiлi
Л
Литература
И
История
medi8
medi8
09.03.2022 17:00 •  Информатика

Написать программу на С++. Задача - Считать текст из файла и вывести на экран только цитаты, т. е. предложения, заключенные в кавычки.

Показать ответ
Ответ:
tyrko24111995
tyrko24111995
15.10.2020 22:04

Итак, целевой язык - C++. Это значит мы - радостные обладатели технологии потоков, с коей мы будем производить весь ввод/вывод как при работе с файлами, так и при работе со стандартным вводом/выводом (консолью).

Ну а раз уж мы работаем с потоками, то будем делать это красивенько: создадим класс-обёртку для потока ввода, цель которого - поиск в этом потоке цитат и отправка их на поток вывода (который мы передаём).

[!] Стоит отметить, что по заданию не сказано, что есть разница между ' и ". Поэтому будем считать их одинаковыми.

[!] Внимание! Рядом с исполняемым файлом надо создать текстовый файл data.txt c текстом и цитатами.

Код

С++11

#include <iostream>#include <fstream>using std::cout;class QuotesFinder {    std::istream &in_stream;    bool is_it_in_quote = false;public:    QuotesFinder() = delete;    QuotesFinder(QuotesFinder&&) = default;    QuotesFinder(QuotesFinder const&) = default;    explicit QuotesFinder(std::istream &is) : in_stream(is) {}    [[nodiscard]]    bool eof() const {        return in_stream.eof();    }    // Вот тут происходит вся магия    QuotesFinder& operator >> (std::ostream& out_stream) {        char buffer;        in_stream.get(buffer); //Получаем очередной символ из потока        if (buffer == '\"' || buffer == '\'') {            if (is_it_in_quote) {                is_it_in_quote = false;                out_stream << buffer;                out_stream << "\n";                return *this;            }            is_it_in_quote = true;        }        if (is_it_in_quote) {            out_stream << buffer;        }        return *this;    }};int main() {    std::ifstream file("data.txt");  // Открываем файл    if (!file.is_open()) {        cout << "File is not exits!";        return 1;    }    QuotesFinder finder(file);  // Создаём обёртку из файлового потока    while (!finder.eof()) // Пока не достигли конца потока        finder >> cout; // переправляем очередной кусок информации в поток вывода}
Написать программу на С++. Задача - Считать текст из файла и вывести на экран только цитаты, т. е. п
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота