Lekcja[34] Zadanie domowe - problem z wczytywaniem kolejnych danych.
Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?
Zarejestruj się!

Lekcja[34] Zadanie domowe - problem z wczytywaniem kolejnych danych.

AutorWiadomość
Temat założony przez niniejszego użytkownika
Lekcja[34] Zadanie domowe - problem z wczytywaniem kolejnych danych.
» 2018-06-04 22:54:23
Witam,
Program ma pominąć błędne dane i odczytać wszystkie liczby i je zsumować.
W poprzednim programie który pisałem, za każdym razem gdy wywoływało się przypisanie:
C/C++
ifstream plik;
int x;
plik >> x;
 to pobierało mi z pliku kolejne wartości(nie pierwszą dostępną)
a w programie poniżej gdy napotka na błąd nie radzi sobie.
Ma ktoś pomysł czemu?

C/C++
#include <cstdlib>
#include <fstream>
#include <iostream>

using namespace std;

bool wczytajPlik( string adres, ifstream & p, int & suma )
{
   
    p.open( adres.c_str() );
    if( !p.good() )
         return false;
   
    int x = 0;
    do
    {
       
        p >> x;
        cout << p.good() << x << endl;
        if( p.eof() ) break;
       
        if( p.fail() )
        {
            p.clear();
            cout << p.fail() << p.good() << p.bad();
            /*wyjscie jest takie:
                                1666
                                00
                                010666
                                A gdy usunę tego breaka to pentla jest nie skonczona
                                i spamuje "01000" */
           
           
        }
        suma += x;
    } while( true );
   
    return true;
   
}
//main jest raczej ok
int main()
{
    int suma = 0;
    ifstream plik;
    plik.clear();
    if( !wczytajPlik( "D:/a/tekst.txt", plik, suma ) )
         cout << "Nie udało się wczytać pliku";
   
    cout << suma;
    return 0;
}



Dane wejsciowe w pliku *.txt:
666 a 1 2 321b9 ac.de ef#@g 5 #3
P-171382
» 2018-06-04 23:06:54
A gdzie te pomijanie błędnych danych? clear() tego nie robi.
P-171383
« 1 »
 Strona 1 z 1