Czyszczenie danych wejścia rozdział 33
Ostatnio zmodyfikowano 2019-01-01 20:52
Mavannkas Temat założony przez niniejszego użytkownika |
Czyszczenie danych wejścia rozdział 33 » 2019-01-01 15:31:47 Podczas robienia zadania wpadłem na pomysł zabezpieczenia programu przed niechcianymi znakami i wymyśliłem to i okazało się, że wszystko działa. Ale czy to dobre rozwiązanie? I mógłby mi ktoś wytłumaczyć dokładnie dlaczego to działa ponieważ nie jestem pewny tego czy dobrze to rozumiem. Ewentualne uwagi co do reszty kodu mile widziane :) Z góry dziękuję za odpowiedź. bool sumowanko( std::string sciezka ) { int a, wynik = 0; std::ifstream plik; plik.open( sciezka.c_str() ); if( !plik.good() ) return true; for(; true; ) { if( !plik.good() ) { std::cout << "Suma to: " << wynik; break; } else { plik >> a; if( !plik.good() ) { plik.clear(); plik.ignore( 1 ); continue; } wynik += a; } } return false; }
|
|
pekfos |
» 2019-01-01 16:28:50 Wygląda dobrze. Działa bo jeśli wystąpi błąd w ignore(), to wyczerpałeś dane z pliku jakie można było oczytać. To jedyny przypadek, żeby wejść do warunku wypisującego sumę. |
|
Mavannkas Temat założony przez niniejszego użytkownika |
» 2019-01-01 20:32:40 Pefkos a masz może pomysł na inne ew. lepsze rozwiązanie tego problemu? |
|
pekfos |
» 2019-01-01 20:52:33 |
|
« 1 » |