0

必要なコード行はこれだけだと思います。プログラムはテキスト ファイルから読み取り、情報を分離して 2 つの異なるファイルに書き直します。すべての値を「正しく」読み取り、適切に分離します。私が抱えている問題は、出力用のファイルにあり、ファイルへの最後のエントリが複製されます。入力に使用している場合、これを解決する方法はわかって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)は同様のプログラムで使用しましたが、私が言ったように、単語の分離ではなく、行ごとに情報を読んでいました。

ありがとう

4

2 に答える 2

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 と不一致の両方が正しく処理されます。

于 2015-04-01T04:05:56.227 に答える
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;
}
于 2015-04-01T03:56:12.170 に答える