Metody klasy ifstream - odczyt z pliku
Ostatnio zmodyfikowano 2013-12-11 20:00
kitsss Temat założony przez niniejszego użytkownika |
Metody klasy ifstream - odczyt z pliku » 2013-12-10 20:06:58 Zawartość notatnika: 3 2 k 1 09 do { int liczba; plik >> liczba; if( plik.fail() ) { cout << "Tu jest fail" << endl; continue; } cout << liczba << endl; } while( plik.good() );
Chciałem, żeby program bezproblemowo nadpisywał liczby z wiersza z notatnika w zmienną, a następnie ją wyświetlał. Tak się dzieję, ale chciałem również, żeby w przypadku gdy napotka błąd logiczny poinformował o tym, niczym się nie przejmował i przeszedł do następnego wiersza w notatniku powtarzając algorytm. Tymczasem na ekranie: 3 2 tu jest fail A gdy w ostatniej linijce zamieszcze: { while( plik.eof() ); Pętli się w nieskończonośc z tym samym wierszem w pliku zamiast przejsc do nastepnego. |
|
kitsss Temat założony przez niniejszego użytkownika |
» 2013-12-10 22:50:48 A chciałem, by program uczynił tak: 3 2 Tu jest fail 1 09
Nikt nie ma żadnych pomysłów :) ? |
|
Adik80 |
» 2013-12-11 11:06:46 Moze zamien na !plik.eof() |
|
kitsss Temat założony przez niniejszego użytkownika |
» 2013-12-11 17:11:28 Nic to nie daje, pętli w nieskończoność aż do błedu. |
|
Adik80 |
» 2013-12-11 19:10:45 to dodaj jeszcze po if(plik.fail() plik.clear() i plik.ignore() |
|
kitsss Temat założony przez niniejszego użytkownika |
» 2013-12-11 20:00:32 Adik80, z pełnią podziwu dla Ciebie program działa jak należy! Zachowuje również swoją uniwersalność, jeśli w notatnik wpisze jeszcze wiele dodatkowych głupot. Niezbędna jest ta funkcja ignore(), doszedłem bowiem wcześniej do tego, żeby użyć funkcji clear(), ale to nic nie dało, dopiero te dwie funkcje razem dały oczekiwany efekt. Może komuś pomoże ta informacja, więc wklejam poprawny kod źródłowy: do { int liczba; plik >> liczba; if( plik.fail() ) { cout << "Tu jest fail" << endl; plik.clear(); plik.ignore(); continue; } cout << liczba << endl; } while( !plik.eof() );
|
|
« 1 » |