Witam zaczne od tego że mam obsługiwać listę podwieszaną która jest najpierw zapisana w pliku txt .Zrobiłem,że to ma wyglądać mniej wiecej tak:
nazwaplyty piosenka1 piosenka2 ;
nazwaplyty1 ;
nazwaplyty2 piosenka ;
bool openfromfile(string name, cd*&head)
{
ifstream plik;
plik.open(name);
if (!plik.is_open())
{
return false;
}
if (plik.eof())
{
return false;
}
else {
string dana;
while (!plik.eof())
{
plik >> dana;
dodsortcd(head, dana);
plik >> dana;
while (dana != ";")
{
dodajsorts(head->first, dana);
plik >> dana;
}
}
return true;
}
plik.close();
}
Według mnie to powinno działać tak:Otwieram plik sprawdzam czy sie wgl otworzył jak nie to zwracam false,potem sprawdzam czy Od razu po otworzeniu nie jestme na jego koncu co powinno oznaczać,że jest pusty tak?I potem uzupełniam liste na takiej zasadzie,że pierwszy wyraz to nazwa płyty,sprawdzam czy kolejny to srednik jak nie to kolejne wyrazy to są piosenki.Zakładam,że plik jest poprawnie uzupełniany czyli nie ma np takiej sytuacji,że jest tylko nazwa płyty,a średnika wgl nie ma i teraz mam pare problemów.Jak plik jest pusty to jak np wywołam tą funkcje to po funkcji nawet jak mam
cout<<"cokolwiek"<<endl;
w mainie to się nic nie wykonuje,nie wiem czemu,jak coś w pliku jest zapisane to kolejne instrukcje w mainie się wykonują.Dodatkowo niekoniecznie dobrze się odczytują te dane bo np jak w pliku tekstowym mam :
plyta1 a b c d ;
plyta2 a c d k ;
plyta3 a m k d ;
To w konsoli po wypisaniu wszystkie piosenki ida do plyty1,ale płyty sa poprawnie odczytane czyli sa 3...
Wiem,że ten odczyt jest zły,ale nie mam pojęcia jak go poprawić do tej zasady co podałem,że najpierw jest nazwa płyty potem piosenki aż do znalezienia średnika.Z tym postaram sobie sam poradzić,ale nie wiem dlaczego w 2 pierwszych przypadkach(blad pliku,pusty plik)Nic sie potem nie wywołuje