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