0
huffmanFile.open("code.txt");

while(huffmanFile.peek() != EOF)
{
    cin >> letters[c] >> numbers[c];
    c++;
}

huffmanFile.close();

入力ファイル: A 23 B 35 C 47 D 0 E 12 F 11 G 92 H 18 I 17

これを実行した後、メイン関数から c を出力しようとしましたが、while ループから抜け出せません。私は役に立たずにデバッグを試みました。これを私が書いた他の多くのプログラムと比較しましたが、まだうまくいきません。

4

2 に答える 2

2

huffmanFileがオブジェクト型であると仮定すると、次のistreamバリアントを使用してみることができます。

while (huffmanFile >> letters[c] >> numbers[c]) {
    ++c;
}

説明:は、ストリームの終わりに達した場合にistream::operator >>呼び出される内部フラグを設定します。eofbitまた、 を返す*thisので、 のような一連の読み取りを実行できますcin >> a >> b >> c。その後、オブジェクトは句istreamによってテストされます。つまり、内部が呼び出され、フラグが設定されている場合は返され、そうでない場合は返されます。whilebool operator()trueeofbitfalse

于 2013-04-07T21:10:43.850 に答える
1

cinは標準入力ストリームで、通常はキーボードからの入力を受け取ります。代わりに、ファイルから入力を読み取る必要があります。

ファイルの読み取り位置が進んでいないため、ループが終了することはありません。

于 2013-04-07T21:08:05.810 に答える