Как сделать так, чтобы мой цикл не запускался еще один раз? - PullRequest
0 голосов
/ 22 октября 2019

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

while (my_input_file) {
my_output_file << getStudentID() << "  " << studentScores() << " ";
totalScore();
calculatePercentage();
calculateGrade();
}

1 Ответ

0 голосов
/ 22 октября 2019

istream не знает, что достигло конца файла, пока после не попыталось прочитать за концом файла. Если вы прочитали только содержимое файла, istream по-прежнему считает, что это хорошо, что означает, что вам нужно вставить istream::fail проверки после попытки что-то прочитать из файла.

...