Metoda eof() nie ustawia flagi, pomimo końca pliku.
Ostatnio zmodyfikowano 2015-05-16 17:01
Huxyf Temat założony przez niniejszego użytkownika |
Metoda eof() nie ustawia flagi, pomimo końca pliku. » 2015-05-16 15:20:58 Witam, Dlaczego metoda eof() nie ustawia flagi na true, pomimo końca pliku? #include <iostream> #include <string> #include <fstream>
using namespace std;
void Wczytaj_co_sie_da( long long dane[], string bledy[], string sciezka, int & dlugosc ) { long long zmienna; ifstream plik; plik.open( sciezka.c_str() ); if( !plik.good() ) { cout << "Brak dostepu do pliku!" << endl; return; } for(;; ) { while( plik >> zmienna ) { dane[ dlugosc ] = zmienna; dlugosc++; } if( plik.eof() ) { cout << "Odczytywanie danych z pliku " << sciezka << " przebieglo pomyslnie!" << endl; plik.close(); return; } else if(( !plik.bad() ) &&( plik.fail() == true ) ) { plik >> bledy[ dlugosc ]; plik.clear(); dlugosc++; } else if(( plik.bad() == true ) &&( plik.fail() == true ) ) { cout << "Nieudana proba odczytu danych z powodu bledu sprzetowego!" << endl; return; } } }
void Wyswietl_dane( long long dane[], string bledy[], int dlugosc ) { cout << endl << "Dane: " << endl; for( int i = 0; i < dlugosc; i++ ) { if( bledy[ i ] != "" ) { cout << i + 1 << ". Nieudana proba odczytu liczby z powodu innego typu danych\""; cout << bledy[ i ] << "\"!" << endl; continue; } cout << i + 1 << ". " << dane[ i ] << endl; } }
int main() { int dlugosc = 0; long long dane[ 500 ]; string bledy[ 500 ], sciezka = "tekst.txt"; Wczytaj_co_sie_da( dane, bledy, sciezka, dlugosc ); if( dlugosc > 0 ) { Wyswietl_dane( dane, bledy, dlugosc ); } return 0; }
|
|
Monika90 |
» 2015-05-16 16:19:44 plik.clear(); powinno być przed plik >> bledy[ dlugosc ]; Gdy strumień jest w stanie błędu, to operacje wejścia/wyjścia nie działają. |
|
Huxyf Temat założony przez niniejszego użytkownika |
» 2015-05-16 17:01:06 Monika90 - Po raz kolejny wielkie dzięki. ;) Niby są to takie niuanse, które nawet nie są omawiane w kursie, aczkolwiek potrafią narobić problemów początkującemu programiście. |
|
« 1 » |