mam problem, musze zrobic baze danych pracownikow, wiem, ze musze do tego zrobic liste, ktora bedzie pobierala dane z pliku, stworzylam plik w którym oddzielam informacje o pracowniku znakiem "|" a nastepny pracownik jest w nastepnej linijce
(Imie|nazwisko|dzien zatrudnienia|miesiac zatrudnienia|rok zatrudnienia|dzien przejscia na emeryture|miesiac|rok)), napisalam strukture ale nie wiem jak zrobic by lista wczytywala dane z pliku? Proszę o pomoc:P
tak właśnie myślałam, i napisałam wcześniej kod na wczytywanie z getline, ale nie wiem, jak go użyć przy listach, aby wszystko dobrze działało,
string wiersz;
ifstream minibaza ("minibaza.txt");
minibaza.open ("minibaza.txt");
if (!minibaza.good()) {
cerr<< "Blad otwarcia pliku" << endl;
getline (minibaza, wiersz);
while (!minibaza.eof()){
cout<< wiersz << endl;
getline (minibaza, wiersz);
}
// minibaza to plik z którego wczytuje dane
Teraz musisz napisać jakiś prosty parser, który odzieli od siebie dane. Możesz też oddzielać dane w pliku spacją i byłoby Ci o niebo łatwiej. Zwłaszcza, że chyba nie masz pojęcia jak się za to zabrać. Masz sam napisac listę, czy możesz skorzystać z jakiegoś sprytnego i gotowego kontenerka?
http://www.cplusplus.com/reference/list/list/
http://www.cplusplus.com/reference/vector/vector/
for(wczytujesz po kolei linijki){
for(zaczynasz od początku wczytanej linii; kończysz na końcu;czyli bardzo banalne){
tworzysz pocniczego stringa i dodajesz do niego kolejne literki
a w między czasie sprawdzasz czy ta literka, to przypadkiem nie kreska
jeżeli to kreska, to dodajesz stworzonego stringa do listy,
tudzież do innego kontenerka, który trzyma strukture/klase/ cokolwiek..
}
}
Prościej (oraz poprawniej) tak:
string wiersz;
ifstream minibaza ("minibaza.txt");
if(!minibaza) cerr<< "Blad otwarcia pliku" << endl;
while(getline(minibaza,wiersz)) cout<<wiersz<<endl;
mam Pytanie,mój program musi miec mozliwosc tworzenia raportów tzn. np, umozliwiac ukazanie listy osób, którzy przechodza na emeryture w okreslonym czasie, najblizszym miesiacu, roku itp,
jak mmoge to zrobic?????