Niepełny odczyt z pliku
Ostatnio zmodyfikowano 2018-03-19 23:26
gibanaa Temat założony przez niniejszego użytkownika |
Niepełny odczyt z pliku » 2018-03-19 23:13:41 Witam. Mam następujący problem z odczytem z pliku. W pliku mam przykładowo 5 linijek zawierających dwie liczby typu całkowitego i znak między nimi określający typ działania. Po uruchomieniu programu z pliku wczytuje mi tylko 4 zamiast 5 linijek. Jeśli chcę aby przy kompilacji program wziął pod uwagę piątą linijkę muszę w pliku dodać szóstą linijkę. Totalnie nie ogarniam co jest nie tak, nie dostrzegam błędu w kodzie. Z góry dzięki za pomoc. #include <fstream> #include <iostream> #include <cstdlib> using namespace std;
void wczytajDane( int a, string znak, int b ) { if( znak == "+" ) { cout << a + b << endl; } else if( znak == "-" ) { cout << a - b << endl; } else cout << "Nie mozna rozpoznac operacji matematycznej!"; }
bool wczytajPlik( string nazwapliku ) { fstream plik; plik.open( nazwapliku.c_str(), ios::in ); if( plik.good() == false ) return false; while( true ) { int a; string znak; int b; plik >> a >> znak >> b; if( plik.good() ) wczytajDane( a, znak, b ); else break; } return true; }
int main() { if( !wczytajPlik( "liczby.txt" ) ) cout << "Nie udalo sie wczytac pliku!"; return 0; } Poniżej zawartość pliku tekstowego: 7 + 5 2 + 3 2 + 2 2 - 1 2 * 3 Po skompilowaniu na ekranie wyświetla się tylko: 12 5 4 1 |
|
pekfos |
» 2018-03-19 23:26:41 plik >> a >> znak >> b; if( plik.good() ) wczytajDane( a, znak, b ); |
plik >> a >> znak >> b; if( !plik.fail() ) wczytajDane( a, znak, b ); Lub w skrócie if( plik >> a >> znak >> b )
|
|
« 1 » |