Może ktoś będzie mi to umiał wyjaśnić. Bawię się na kompilatorze Dev C++ 4.9.8.0 i wykonując
poniższy program, w którym otwierany plik nic.txt nie istnieje funckja plik.bad() nie zwraca
żadnej wartości niezerowej :|
#include <iostream.h>
#include <fstream.h>
main()
{
ifstream plik ;
plik.open("nic.txt") ;
if (plik.bad()) { cout << "Blad!" << endl ; }
int y ;
cin >> y ;
}
Genralnie rzecz biorąc kompilator zachowuje mi się trochę tak jakby nie miał w słowie flag strumienia części 'bad'... Natomist przy zabawie z flagą failbit wyszło, ze wprawdzie jest ustawiana i czytana jak trzeba, ale jakoś nie udało mi się jej skasować operacją
plik.clear( plik.rdstate() & ~ios::failbit) ; :(
I jeszcze jedno - jaka mogłaby być pętla ignorująca wszystkie znaki tkwiące w strumieniu?
Myślałem, że np dla strumienia cin może to być zwyczajne while(cin.ignore()) ale taka operacja owszem, wprawdzie zjada to co w danej chwili tkwi w strumieniu, ale zamiast się potem wyłączyć czycha na wszystkie moje naciśnięcia klawiatoru, żeby je zaraz potem zjeść i dalej czychać... A jak na moje pot<ort>żeby</ort> to do bani z taką łakomą pętlą...