Poruszanie się po pliku (seekg(), tellg())
Ostatnio zmodyfikowano 2010-08-22 14:35
robaczek122 Temat założony przez niniejszego użytkownika |
Poruszanie się po pliku (seekg(), tellg()) » 2010-08-22 13:27:50 Cześć! Oto uproszczona wersja kodu, który nie działa tak jakbym chciał: #include <fstream> #include <iostream> using namespace std;
fstream dane; string linijka;
int main() { dane.open( "dane.txt", ios::in ); if( dane.good() == true ) { cout << "otworzylem plik dane.txt" << endl << endl; while( !dane.eof() ) { getline( dane, linijka ); cout << linijka << endl; } dane.seekg( 0, ios::beg ); int GdzieJestem = dane.tellg(); cout << "Jestes na: " << GdzieJestem << endl; getline( dane, linijka ); cout << linijka << endl; dane.close(); } else cout << "nie udalo sie otworzyc pliku dane.txt" << endl; system( "PAUSE" ); return( 0 ); }
I moje pytanie: dlaczego pod koniec kodu, kiedy przeniosę wskaźnik na początek pliku, program pobiera mi ostatnią linijkę, a nie pierwsza. Docelowo program działa tak, że usuwa wszystkie niechciane rzeczy z pliku, następnie wraca do początku i dalej coś z nim robi. Niestety mam problem z powrotem do początku pliku. ps. Tak, tak wiem nie powinno być na końcu tego systemu... edit: sorki, ale jakoś to "zawin nie chciało działać. |
|
ison |
» 2010-08-22 14:11:51 gdy fstream napotka jakikolwiek błąd albo koniec pliku, zostaje w takim stanie przez cały czas, aby temu zapobiec i 'wywalić' ten stan, musisz dopisać: przed dane.seekg( 0, ios::beg );
edit: sorki, ale jakoś to "zawin nie chciało działać.
zwin a nie zawin pozdrawiam ;) |
|
robaczek122 Temat założony przez niniejszego użytkownika |
» 2010-08-22 14:35:44 niezły trick, będę pamiętać na przyszłość. Dzięki za pomoc! ;) |
|
« 1 » |