Запись в файл дублирует последнюю запись

Я думаю, что это единственные строки кода, необходимые. Программа читает из текстового файла, разделяет информацию и переписывает ее в два разных файла. Он «правильно» читает все значения и разделяет их соответствующим образом. проблема, которую я имею, в файлах для вывода, он дублирует последнюю запись в файл. Я знаю, как решить эту проблему, если я использую getline() для ввода, но я читаю в каждом отдельном слове отдельно в файле.

Вот код, где я думаю, что проблема заключается в:

while (in_file.peek() != EOF)
{
in_file >> rank >> boy_name >> boy_number >> boy_percent >> girl_name >> girl_number >> girl_percent;
boy_output << rank << " " << boy_name << " " << boy_percent << endl;
girl_output << rank << " " << girl_name << " " << girl_percent << endl;
}

я использовал while (getline(in_file, line) && in_file.peek() != EOF) в аналогичной программе, но, как я уже сказал, я читал информацию построчно, а не как разделение слов.

Спасибо

0

Решение

Вы можете попробовать использовать —

while(1)
{
if(in_file.peek() == EOF)
{
break;
}
in_file >> rank >> boy_name >> boy_number >> boy_percent >> girl_name >> girl_number >> girl_percent;
boy_output << rank << " " << boy_name << " " << boy_percent << endl;
girl_output << rank << " " << girl_name << " " << girl_percent << endl;
}
0

Другие решения

Самый простой способ исправить ваш цикл ввода:

while (in_file >> rank >> boy_name >> boy_number >> boy_percent >> girl_name >> girl_number >> girl_percent)
{
boy_output << rank << " " << boy_name << " " << boy_percent << endl;
girl_output << rank << " " << girl_name << " " << girl_percent << endl;
}

Это будет повторяться до тех пор, пока извлечение потока будет успешным. Это правильно обрабатывает как EOF, так и несоответствия между входными данными и типами переменных.

0

По вопросам рекламы [email protected]