Почему второй цикл while в моей программе не работает, если перед ним есть цикл while? - PullRequest
0 голосов
/ 27 июня 2019

Оба цикла while работают индивидуально.Тем не менее, второй цикл while в моем коде не будет работать, если присутствует цикл while над ним.Мне нужны оба цикла while для совместной работы.

#include <iostream>
#include <string>
#include <fstream>
using namespace std;

int main(){
    string line, line1, line2;
    int count = 0;
    int track = 0;
    int stop;
    ifstream file ("ai.txt");
    while (getline(file, line2)){
        count++;
    }
    file.seekg (0L, ios :: beg);
    stop = count - 10;
    while (getline(file, line)){
        track++;
        if (track >= stop){
            for (int num = 1; num <=10; num++){
                getline(file,line1);
                cout << line1 << endl;   
            }
        }
    }

}

Код должен выводить последние десять строк любого текстового файла.

1 Ответ

2 голосов
/ 27 июня 2019

Итак, вы израсходовали все строки из файлового потока.

Затем вы искали поток обратно в начало файла.

И вы снова начали потреблять строки.

Что вы не сделали, так это очистили флаг «конец файла» из потока, который был установлен, когда он достиг конца в первый раз. С этим флагом все еще на месте, поток бесполезен.

Добавить file.clear() до file.seekg(...).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...