Dwukrotny odczyt do końca pliku

Dwukrotny odczyt do końca pliku
Gracu
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Białystok
0

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

Kopiuj
//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.

Kopiuj

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ć?

fasadin
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 4883
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)

MarekR22
  • Rejestracja: dni
  • Ostatnio: dni
2
Kopiuj
while(getline(odczyt, linia))
    vecto.push_back(linia);

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

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.