Witam, mam problem z funkcją która wczytuje z pliku.
Żeby dokładnie wytłumaczyć o co chodzi, posłużę się gotowym przykładem.
Funkcja wczytuje 3 stringi i 2 int'y
cos
coss
cosss
1
2
I teraz wszystko dobrze działa, gdy po dwójce nie ma nowej linjki, gdy jest to wtedy funkcja odpala sie jeszcze raz i wczytuje same int'y.
Dodatkowo, przy dodawaniu nowych elementów, zapisują się w przykładowy sposób
cosss
1
2nowecos
Gdy dodam enter po 2 (tak, zeby domyslnie zapisywalo, to pgoram znowu sypie sie przez inty.)
Funkcja wczytywanie oraz zapisywanie:
void lista::wczytywanie()
{
fstream plik;
plik.open("book.txt", ios::in);
{
while (plik.eof()==0)
{
string tit, aut, gen;
int cop, id;
getline(plik, tit);
getline(plik, aut);
getline(plik, gen);
plik >> cop;
plik >> id;
lista_ksiazek->dodaj_ksiazke(tit, aut, gen, cop, id);
}
}
plik.close();
}
void lista::zapisywanie()
{
fstream plik;
plik.open("book.txt", ios::out);
ksiazka *tymczasowa = new ksiazka;
if (pierwsza != NULL)
{
tymczasowa = pierwsza;
while (tymczasowa)
{
plik << tymczasowa->title << endl;
plik << tymczasowa->author << endl;
plik << tymczasowa->genre << endl;
plik << tymczasowa->copies << endl;
plik << tymczasowa->ID;
if (tymczasowa->nastepna != NULL)
tymczasowa = tymczasowa->nastepna;
else break;
}
}
delete(tymczasowa);
plik.close();
Dodam też, że przy pustym pliku tekstowym, również zapisują się inty, tylko że jako śmieci.
Z góry bardzo dziekuje za jakakolwiek wskazówke!
Pozdrawiam