Dwukrotny odczyt do końca pliku

0

Witam, mam taki problem ponieważ chcę znaleźć pewną daną w pliku tekstowym więc czytam go do końca

//pseudokod
while(!odczyt.eof())
getline(odczyt, linia);
if(linia == szukanaLinia)
{
nrLinii = licznik;
}
licznik++;
 

następnie mając nrLinii która ma powiedzmy pseudonim, chcę wyświetlić linijkę wyżej w której jest imię oraz 5 kolejny linijek.


while(!odczyt.eof())
{
getline(odczyt, linia2);
if(j == nrLinii)
 for(int i = 0; i < 5; i++)
  getline(odczyt, linia2);

j++;
}
 

dlaczego to nie działa? Próbowałem ustawiać przed drugą pętla wskaźnik na początek pliku używająć seekg(0), również zamykałem plik i też nie działa. Jak to rozwiązać?

0

jezeli to nie jest duzy plik (powiedzmy nie ma 100 000 linii) wczytaj sobie go do std::vector.
Znajdz to co potrzebujesz za pomoca vector.find
http://stackoverflow.com/questions/571394/how-to-find-an-item-in-a-stdvector
i po prostu wyjdz o jedna linijke wyzej (czyli o jeden obiekt wyzej)

2
while(getline(odczyt, linia))
    vecto.push_back(linia);

Proszę poczytać dokumentację eof() i zastanowić się na czym polega problem.

1 użytkowników online, w tym zalogowanych: 0, gości: 1