2012-03-11 13 views
7

Pracuję z ifstream. Czytam, dopóki nie ustawi się bit EOF (potrzebuję w ten sposób).Ifstream - Resetuj bit EOF

Dlaczego to nie działa w ten sposób:

// 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.";  
} 

Funkcja read nie jest sukces w każdej chwili. Spróbuję też użyć IN.setstate(ifstream::goodbit)IN.clear(). Ale to jest to samo, czy mam rację?

+0

Ten kod nie jest prawidłowy. Musiałbyś wywołać 'read' na rzeczywistym obiekcie' istream'. –

+3

BTW: ogólnie rzecz biorąc ALLCAPS jest używany dla MACROS i DEFINE. – 111111

Odpowiedz

7

Zmień swój kod tak:

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