Чтение файлов и манипулирование - PullRequest
0 голосов
/ 14 апреля 2020

У меня есть текстовый файл:

1
2
3
stop
4

Код должен добавить каждое число к предыдущему числу, чтобы получить новое значение, и его нужно остановить, когда он читает «стоп» в файле.

Например, вывод будет:

1
3
5
Reading has stopped

Как я могу разбить код, чтобы мой вывод был таким? «Чтение остановлено», должно появляться только в том случае, если в файле есть «стоп». в противном случае на выходе должны быть только цифры.

Ответы [ 2 ]

0 голосов
/ 14 апреля 2020

Если в вашем текстовом файле есть только одна строка «stop», то есть очень простое решение: вы просто продолжаете читать целые числа до тех пор, пока чтение не завершится

int main() {
    ifstream ifs("test.txt");

    int first = 0;
    int second;
    while (ifs >> second) {
        cout << first + second << ' ';
        first = second;
    }

    cout << "Reading has stopped" << endl;
    return 0;
}

Проблема с этим решением заключается в том, что если у вас есть другие строки в текстовом файле, и вы хотите обрабатывать их по-другому, это решение не поможет.

Надеюсь, это поможет.

0 голосов
/ 14 апреля 2020

Вы можете прочитать каждый фрагмент файла в строку и завершить, если ввод «стоп». Если ввод не «стоп», вы можете преобразовать его в int, используя std :: stoi

#include <string>
#include <iostream>
#include <fstream>

int main() {
    std::string numberString;
    std::ifstream file{ "filename.txt" };

    int previousNumber = 0;
    while (file >> numberString)
    {
        if(numberString == "stop")
        {
            break;
        }
        try {
            int number = std::stoi(numberString);
            std::cout << (number + previousNumber) << " ";
            previousNumber = number;
        } catch(...) {
            std::cout << "invalid number" << std::endl;
        }
    }
    file.close();
    std::cout << "Reading has stopped" << std::endl;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...