Witam. Potrzebuję napisać funkcję, która usuwa coś z pliku. Jest to można powiedzieć taka "baza" studentów. Struktura pliku wygląda tak:
<indeks studenta="studenta"> <imie> <nazwisko> <e-mail> <indeks kolejnego="kolejnego"> itd.Próbuję wczytywać dane z pliku i po napotkaniu danego nazwiska, pomijać ten rekord przy wpisywaniu. Sprawa byłaby prostsza, gdybym mógł wczytać cały plik do jakiegoś bufora, ale niestety tego zrobić nie mogę. Kod wygląda tak:
a.open("studenci.txt", fstream::out | fstream::in);
int indeks;
int licznik=0;
string nazwisko,plik_nazwisko,imie,mail;
cout << "\tUSUN STUDENTA" << endl;
cout << "*----------------------*" << endl<<endl;
cout << "Podaj nazwisko studenta, ktorego chcesz usunac: ";
cin >> nazwisko;
while(!a.eof()) {
a >> indeks;
a >> imie;
a >> plik_nazwisko;
a >> mail;
system("PAUSE");
if (nazwisko!=plik_nazwisko) {
a << "\n\n" << indeks << "\n" << imie << "\n" << plik_nazwisko << "\n" << mail;
} else {
licznik++;
}
}
cout <<endl<<"Usunieto "<<licznik<<" studentow z bazy..."<<endl;
a.clear();
a.close();
system("PAUSE");
Próbowałem ogólnie jakoś manewrować seekg,seekp, ale nie bardzo to pomaga. While po prostu trwa w nieskończoność. Z góry dziękuję za za pomoc i przepraszam za trochę chaotyczną formę pytania, ale mam nadzieję, że zrozumiecie.