Niepełny odczyt z pliku
Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?
Zarejestruj się!

Niepełny odczyt z pliku

AutorWiadomość
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.

C/C++
#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

P-170126
» 2018-03-19 23:26:41
C/C++
plik >> a >> znak >> b;
if( plik.good() )
     wczytajDane( a, znak, b );
C/C++
plik >> a >> znak >> b;
if( !plik.fail() )
     wczytajDane( a, znak, b );
Lub w skrócie
C/C++
if( plik >> a >> znak >> b )
P-170127
« 1 »
 Strona 1 z 1