Odczyt danych z pliku

0

Pomógłby ktoś znaleźć błąd?
Wypisuje tylko pierwsza liczbę, a dalej nie działa.

#include <iostream>
#include <fstream>
#include <cstdlib>
#include <string>


using namespace std;
struct tnrzd{
    string nazwisko;
    double suma;
};
int main() {
    ifstream inFile;
    inFile.open("tekst.txt");
    if(!inFile.is_open())
    {
        cout << "Nieudana proba otwarcia pliku.";
        exit(EXIT_FAILURE);
    }
    int temp;
    int i=0;
    inFile >> temp;
    cout << "Liczba wplacajacych: " << temp << endl;
    tnrzd *tab=new tnrzd[temp];

    if(inFile.good())
    {
        while(!inFile.eof())
        {
            getline(inFile,tab[i].nazwisko);
            inFile >> tab[i].suma;
            i++;
        }
    }
    inFile.close();
    cout << "Nasi Wspaniali Sponsorzy" << endl;
    bool Empty=true;
    for(int i=0; i<temp; i++)
    {
        if(tab[i].suma>=10000)
        {
            cout << "Nazwisko: " << tab[i].nazwisko << '\t';
            cout << "Kwota: " << tab[i].suma << endl;
            Empty=false;
        }
    }
    if(Empty== true)
    {
        cout << "Brak" << endl;
    }
    Empty=true;
    cout << "Nasi  Sponsorzy" << endl;
    for(int i=0; i<temp; i++)
    {
        if(tab[i].suma<10000)
        {
            cout << "Nazwisko: " << tab[i].nazwisko << '\t';
            cout << "Kwota: " << tab[i].suma << endl;
            Empty=false;
        }
    }
    if(Empty== true)
    {
        cout << "Brak" << endl;
    }
    inFile.close();
    delete [] tab;
        return 0;
}

Tekst.txt

4
Sam Stone
2000
Freida Flass
100500
Tammy Tubbs
5000
Rich Raptor

1

błąd pierwszy: while(!inFile.eof()) powinno być while(getline(inFile,tab[i].nazwisko))

błąd drugi, getline zaraz po tym jak wczytano zwykłą liczbę.
Zastanów się co wczyta getline jeśli wskaźnik odczytu jest tuż za liczbą i jakie to ma później konsekwencje.

trzeci błąd dane są niepełne.

qucik fix, więc bez gwarancji.

https://dsp.krzaq.cc/post/176/ucze-sie-cxx-kiedy-uzywac-new-i-delete/

0

#include <iomanip>
while(getline(inFile>>ws,tab[i].nazwisko))

1 użytkowników online, w tym zalogowanych: 0, gości: 1