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

Я думаю, что это единственные строки кода, необходимые. Программа читает из текстового файла, разделяет информацию и переписывает ее в два разных файла. Он "правильно" читает все значения и разделяет их соответствующим образом. проблема, которую я имею, в файлах для вывода, он дублирует последнюю запись в файл. Я знаю, как решить эту проблему, если я использую 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) в аналогичной программе, но, как я уже сказал, я читал информацию построчно, а не как разделение слов.

Спасибо

2 ответа

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

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, так и несоответствия между входными данными и типами переменных.

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

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;
}
Другие вопросы по тегам