Dateiende abfragen
-
Hallo zusammen,
ich möchte eine Datei öffnen und dann über Schleifen mehrere Werte einlesen.
Wie kann ich denn da abfragen ob die Datei schon am Ende ist und dann abbrechen?Vielen Dank
Viele Grüße
-
Wie öffnest du die Datei? Je nachdem, was du verwendest, gibt es verschiedene Methoden, an die EoF-Kennzeichnung ranzukommen:
bei fstreams kannst du den Status mit "while(fin)..." (das bricht auch bei Fehleingaben ab) oder "while(!fin.eof())..." überprüfen, bei einem FILE* kannst du das per "while(!feof(file))..." erledigen.
-
Hi,
ich mache das mit fstream file(name,ios::in);
dann mit dem seek befehl an ne bestimmte Stelle usw.
-
Wie ich oben schon sagte - direkte Überprüfung oder .eof():
if(file.eof()) cout<<"Dateiende erreicht"<<endl;
Eventuell könntest du auch mit tellg() die aktuelle Position bestimmen und mit dem Wert vergleichen, den du setzen wolltest.
-
ok,
aber wie kann ich das dann machen das er an ne bestimmte stelle schauen soll. Wenn da noch was steht ne funktion aufrufen wenn nicht dann ende der datei erreicht?
-
Erst an die Stelle fahren und dann überprüfen, ob da noch etwas drinsteht. Alternativ kannst du dir auch die Dateilänge merken und vergleichen:
ifstream file("daten.txt"); file.seekg(0,ios::end); int flen=file.tellg(); ... int pos=...; if(pos<flen) { file.seekg(pos); file.read(data,anzahl); ... }
-
Cool,
vielen vielen Dank.
Könntest Du mir bitte noch kurz sagen wie ich, wenn ich Stellen eingelesen habe diese dann vergleichen kann.
d.h. ich möchte wenn er "DESADVD" eingelesen hat das er dann ne neue Schleife beginnt?Vielen Dank schon mal
Viele Grüße
-
Du kannst den eingelesenen Block in einen string packen und dann dessen Suchmethoden (Find() und Kollegen) darauf anwenden oder ihn mit bestimmten Schlüsselwörtern vergleichen.