Witam! Piszę prosty program, w którym potrzebuję opanować obsługę plików. Mam taki plik dane.txt:
1;JanKowalski;3c
2;JanNowak;2d
3;AnnaNowak;4c
(danych będzie więcej)
I z tego potrzebuję zrobić tak, żeby w jakiejś pętli brało jedną linię tekstu i czytało po kolei do tablicy przykładowo ID[x], do momentu aż napotka średnik (;), wtedy kończy wpisywanie do tej tablicy i dane po średniki wpisuje do tablicy ImieNazwisko[x], znowu przerywa jak będzie średnik i wpisuje do tablicy klasa[x] i tak z każdą linijką po kolei, aż skończą się linię w pliku. Ważne tutaj jest, żeby numery tablicy, w które program wpisuje dane były takie samo jak id w pliku czyli np. dane Anny Nowak były w tablicach o id 3, czyli zamiast x powinno być 3. Nie wiem jak to rozgryźć, męczę się z tym cały dzień. Ktoś byłby w stanie pomóc?
Byłem na etapie, kiedy miałem kod:
int Id[3];
string ImieNazwisko[3];
string klasa[3];
plik>>Id[0]>>ImieNazwisko[0]>>klasa[0];
cout<<Id[0]<<"\t"<<ImieNazwisko[0]<<"\t"<<klasa[0]<<endl;
i działało to tak, że brało tylko pierwszą linię za pomocą getline() i faktycznie wpisywało w miejsca 0 w tych tablicach, ale średnik brało jako domyślny separator, a to właśnie chciałem zmienić, żebym mógł sobie ustalić, że raz to może być w jednej linii średnik a raz np. % czy coś innego. Trudno to wyjaśnić, ale mam nadzieję, że rozumiecie. Potrzebuję na końcu wyświetlić wszystkie te dane, ale to nie problem już będzie, jak wszystkie te dane będą po kolei ładnie posegregowane w tablicach.
Podsumowując: Jak ustawić swój separator, po którym przestanie wpisywać do jednej zmiennej/tablicy dane i zacznie do drugiej po średniku, aż napotka kolejny, a po enterze (czyli w nowej linii) znowu zacznie do pierwszej zmiennej i tak w kółko, aż skończą się dane?
Ważne! Bardzo proszę o pomoc