Вопрос задан 02.11.2023 в 03:26. Предмет Информатика. Спрашивает Овчинников Владимир.

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

предложения, заключенные в кавычки.
0 0
Перейти к ответам

Ответы на вопрос

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Гаврилова Даша.

Итак, целевой язык - 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
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Для решения данной задачи нам понадобится открыть файл, считать его содержимое, а затем найти и вывести цитаты.

Программа на С++ для считывания текста из файла и вывода на экран только цитат:

```cpp #include #include #include

int main() { // Открываем файл для чтения std::ifstream inputFile("file.txt"); // Проверяем, удалось ли открыть файл if (!inputFile.is_open()) { std::cout << "Ошибка открытия файла" << std::endl; return 1; } // Считываем содержимое файла построчно std::string line; while (std::getline(inputFile, line)) { // Ищем кавычки в текущей строке std::size_t startPos = line.find("\""); std::size_t endPos = line.find("\"", startPos + 1); // Если найдены кавычки, выводим содержимое между ними while (startPos != std::string::npos && endPos != std::string::npos) { std::string quote = line.substr(startPos + 1, endPos - startPos - 1); std::cout << quote << std::endl; // Переходим к следующим кавычкам startPos = line.find("\"", endPos + 1); endPos = line.find("\"", startPos + 1); } } // Закрываем файл inputFile.close(); return 0; } ```

Программа открывает файл с именем "file.txt" для чтения. Если файл не удается открыть, выводится сообщение об ошибке и программа завершается. Затем программа считывает содержимое файла построчно.

Для каждой строки мы ищем кавычки. Если кавычки находятся, мы выводим содержимое, находящееся между кавычками, и переходим к следующей паре кавычек.

После обработки всех строк файл закрывается, и программа завершается.

Обратите внимание, что вместо "file.txt" вы можете указать путь к вашему файлу или использовать другое имя файла.

0 0

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

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос