[c++] fstream flaga błędu

0

Witam. Mam następujący kod:

ifstream odczyt("baza.zalew");
    while(!odczyt.eof() && odczyt )
    {
        odczyt>>tmp.imie;
        odczyt>>tmp.nazwisko;
        odczyt>>tmp.wiek;
        odczyt>>tmp.telefon;
	czlowiek.push_back(tmp);
    }

i powiedzmy, że wiek jest reprezentowany jako liczba. Jeżeli w pliku będzie znak, to program się wywali..
Niby

&& odczyt

nie przepuści tego błedu i po prostu nie wczyta danych, ale jak mam "przejąć" flagę błędu aby wyświetlić jakis komunikat??

1

Źle to napisałeś. Powinno być, lac coś takiego:

ifstream odczyt("baza.zalew");
while(1)
{
    odczyt >> tmp.imie >> tmp.nazwisko >> tmp.wiek >> tmp.telefon;
    if (odczyt.good()) {
        czlowiek.push_back(tmp);
    } else {
        if (!odczyt.eof()) { // błąd inny niż czytanie poza plikiem
            cerr << "Bład z obsługą pliku";
        }
        odczyt.clear(); // wyczyść informacje o błędzie
        break;  // przerwij pętle.
    }
}

Pamiętaj, że eof zwraca true tylko jeśli nastąpiła już próba czytania poza plikiem, nie wtedy gdy osiągnięto koniec pliku!

0

dzięki:)

1 użytkowników online, w tym zalogowanych: 0, gości: 1