seekg funktioniert nicht
-
Hallo Leute,
ich benutze die folgende Funktion um eine Datei zu öffnen
fstream *inPrgData;
...
inPrgData = new fstream (FileName.c_str(),ios::in | ios::nocreate);
inPrgData->seekg(0);
...In einer Schleife ermittle ich die Anzahl der Zeilen.
while (!inPrgData->eof())
{
inPrgData->getline(RecLine,MAX_REC_LINE -1);
CountLine++;
}
...Danach will ich eigentlich mit
...
inPrgData->seekg (0, ios::beg)
...
(oder auch mit seekp) an den Dateianfang zurückspringen.Das funktioniert so nicht!
Ich helfe mir im Moment mit
delete inPrgData;
inPrgData = new fstream (FileName.c_str(),ios::in | ios::nocreate);
inPrgData->seekg(0);Das geht zwar, ist aber nicht elegant. Habe schon diverse Artikel im Forum gelesen und die Seite http://www.cplusplus.com/ref/iostream/istream/seekg.html besucht, hilft aber alles nicht weiter.
Was mach ich falsch?
Danke
-
Hallo,
Das funktioniert so nicht!
Wo ist dein Pointer denn? Kommt irgendne Fehlermeldung? Ich kann jetzt auch keinen Fehler entdecken. Benutzt mal Codetags.
-
Ahja, du musst erst das EOF Flag löschen:
inPrgData->clear();
Ich würde die Daten auch so einlesen:
while (inPrgData->getline(RecLine, 200)){ CountLine++; }
Ansonsten zählst du das EOF Flag mit und hast immer eine Zeile mehr, als tatsächlich in der Datei stehen.
-
Hallo Carsten,
du warst schneller als ich. Ich wollte gerade eine Antwort auf deinen ersten Beitrag posten als die Lösung ankam. Hat 100%ig geholfen. Vielen Dank für die prompte Hilfe
Sailskip