2012-03-11 9 views
7

私はifstreamで作業しています。私はEOFビットがセットされるまで読んだ(私はこの方法が必要)。 Ifstream - EOFビットをリセットする

はなぜ、これを動作しません:

// IN is ifstream file. CH is char. 

if (IN.eof()) { 
    IN.seekg(ios::beg); 
    IN.clear(); 

    if (read((char*)&CH, sizeof(CH))) 
     cout << "Succes."; 
    else 
     cout << "Not S.";  
} 

read機能はいつでも成功ではありません。私はIN.clear()の代わりにIN.setstate(ifstream::goodbit)を使用してみてください。しかし、それは同じです、私は正しいのですか?

+0

そのコードが有効ではありません。実際の 'istream'オブジェクトに対して' read'を呼び出さなければなりません。 –

+3

BTW:一般にALLCAPSはMACROSとDEFINEに使用されます。 – 111111

答えて

7
は、このようにコードを変更し

IN.clear(); 
IN.seekg(0, ios::beg);