写入文件会复制最后一个条目

时间:2015-04-01 03:39:42

标签: c++ filestreams

我认为这是唯一需要的代码行。程序从文本文件中读取,将信息分离出来并将其重写为两个不同的文件。它“正确”读取所有值,并适当地分离它。我遇到的问题是,在输出文件中它复制了文件的最后一个条目。如果我使用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 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分: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和不匹配。