• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Getline nie wczytuje poprawnielinii

Object Storage Arubacloud
0 głosów
135 wizyt
pytanie zadane 6 stycznia 2019 w C i C++ przez Marcin Rutkowski Nowicjusz (140 p.)

Hej, kompletnie nie rozumiem co jest nie tak, napisałem program do zapisywania bazy danych. Dodawanie osoby działa bez problemu, ale funkcja import działa nie poprawnie. Wczytuje jedynie numer pracownika i tylko pierwszą cyfrę.

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

using namespace std;

class Pracownik
{
    int numer;
    string imie;
    string nazwisko;
    string specializacja;
    string data_ur;
    string pesel;

public:
    void add_worker()
    {
        cout<<"DODAWANIE PRACOWNIKA:"<<endl;
        cout<<"Podaj imie: ";
        cin>>imie;
        cout<<"Podaj nazwisko: ";
        cin>>nazwisko;
        cout<<"Podaj specializacje: ";
        cin>>specializacja;system("CLS");
        cout<<"Podaj date urodzenia: ";
        cin.ignore();
        getline(cin, data_ur);
        cout<<"Podaj pesel: ";
        cin>>pesel;
    }

    void show_worker()
    {

        cout<<endl<<"DANE PRACOWNIKA NUMER: "<<numer<<endl;
        cout<<imie<<endl;
        cout<<nazwisko<<endl;
        cout<<specializacja<<endl;
        cout<<data_ur<<endl;
        cout<<pesel<<endl<<endl;
    }

    void add_nr()
    {
        string linia;
        fstream plik;
        plik.open("numer.txt", ios::in);
        if(plik.good()==false){cout<<"NIE MOZNA OTWORZYC PLIKU"; exit(0);}
        getline(plik, linia);
        numer=atoi(linia.c_str())+1;
        plik.close();
        plik.open("numer.txt", ios::out);
        plik<<numer;
        plik.close();
    }

    void save_worker()
    {
        fstream plik;
        plik.open("baza.txt", ios::out | ios::app);
        plik<<numer<<endl;
        plik<<imie<<endl;
        plik<<nazwisko<<endl;
        plik<<specializacja<<endl;
        plik<<data_ur<<endl;
        plik<<pesel<<endl;
        plik.close();
    }

    void import_worker()
    {
        int nr_linii=1;
        string linia;
        fstream plik;
        plik.open("baza.txt", ios::in);
        if(plik.good()==false){cout<<"NIE MOZNA OTWORZYC PLIKU"; exit(0);}
        while(getline(plik, linia))
        {
            switch(nr_linii)
            {
            case 1: nr_linii=atoi(linia.c_str()); break;
            case 2: imie=linia; break;
            case 3: nazwisko=linia; break;
            case 4: specializacja=linia; break;
            case 5: data_ur=linia; break;
            case 6: pesel=linia; break;
            }
        nr_linii++;
        }
        plik.close();
    }
};

Wyrzuca jedynie NUMER PRACOWNIKA: 1 oraz 5 enterów.

1 odpowiedź

+1 głos
odpowiedź 6 stycznia 2019 przez NoEL Nowicjusz (240 p.)
Błąd w lini 82 numer lini = wartość z pliku zamiast numer = wartość z pliku
komentarz 6 stycznia 2019 przez Marcin Rutkowski Nowicjusz (140 p.)
Racja, dziękuję, jak zwykle głupi błąd. Koniec końców i tak musiałem zmienić funkcję, to ba wyświetliłaby tylko ostatniego pracownika :?

Podobne pytania

–1 głos
2 odpowiedzi 1,070 wizyt
pytanie zadane 31 stycznia 2018 w C i C++ przez niezalogowany
0 głosów
1 odpowiedź 528 wizyt
pytanie zadane 9 maja 2017 w C i C++ przez Ditrix Mądrala (5,650 p.)
+2 głosów
1 odpowiedź 465 wizyt
pytanie zadane 26 marca 2016 w C i C++ przez TheFeniks Gaduła (4,690 p.)

92,555 zapytań

141,403 odpowiedzi

319,560 komentarzy

61,940 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...