Textdatei lesen
-
hallo
folgende code zum Auslesen einer Textdateiifstream dat; string infilename; //////////////////// do { dat.clear(); cout << "\n Bitte Datei eingeben, aus der gelesen werden soll: "; getline(cin, infilename); dat.open (infilename.c_str(),ios::in); if(dat.fail()) // Fehlertest durchführen cout<<"Datei existiert nicht!"<<endl; }while(dat.fail());
es funzt wenn ich am Anfang den richtigen dateiname eingebe.
(a propos hier sollte ich immer 2 mal auf ENTER drücken!!! kann man das nicht mit stückcode um eins dekrementieren)
aber wenn ich einen falschen Dateiname eingebe kommen wie erwartet:Datei existiert nicht! Bitte Datei eingeben, aus der gelesen werden soll:
jetzt gebe ich den richtigen Dateiname dann stürzt das prog ab und kommt die Meldung:
Debug Assertion failed!
vielen dank für jeden tip
-
also bei mir funktioniert es (auch ohne 2x enter):
#include <iostream> #include <string> #include <fstream> using namespace std; int main() { ifstream dat; string infilename, datei; do { dat.clear(); cout << "\n Bitte Datei eingeben, aus der gelesen werden soll: "; getline(cin, infilename); dat.open (infilename.c_str()); if(dat.fail()) cout<<"Datei existiert nicht!"<<endl; else { while(!dat.eof()) { getline(dat, datei); cout << datei << endl; }; dat.close(); }; }while(dat.fail()); }
-
Danke enno-tyrant
aber es funzt leider bei mir immer noch nicht .
ok nicht schlimm hätte jemand vielleichteine Antwort für den 2.Teil der Frage:aber wenn ich einen falschen Dateiname eingebe kommen wie erwartet: Datei existiert nicht! Bitte Datei eingeben, aus der gelesen werden soll: jetzt gebe ich den richtigen Dateiname dann stürzt das prog ab und kommt die Meldung: Debug Assertion failed!
Danke
-
hast du mal versucht eine andere datei zu öffnen ?
welchen compiler und welches bs nutzt du?
-
Danke enno dass du immer noch dabei bist.
ich habe dein Prog genau übernommen und habe es mit verschiedenen dateien versucht. immer das gleiche(also 2 mal auf ENTER drücken!!).
ich benutze win2000, und VC++6.0 professionel edition. was für einen compiler hat es weiss ich leider nicht.
Danke
-
mhh, ersetze mal beide:
(dat.fail())
durch
(!dat.good())
aber warum du 2x mit enter bestätigen mußt ist mir schleierhaft
//edit: oder ersetze es einfach durch:
(!dat)
-
hi enno-tyrant!
ich habe es genauso wie du gesagt hast aber leider hat es sich nichts getan.
der 2. Teil der Frage:(siehe oben)
aber wenn ich einen falschen Dateiname eingebe kommen wie erwartet:Datei existiert nicht! Bitte Datei eingeben, aus der gelesen werden soll:
jetzt gebe ich den richtigen Dateiname dann stürzt das prog ab und kommt die Meldung:
Debug Assertion failed!
Danke
-
Das 2x Enter kommt von diesem getline bug musste mal nach suchen gibt es viele Posts drüber.
-
hallo
das stimmt Hans.
ich hab keine posts bezüglich getline bug gefunden . könnte mir jemand vielleicht das einfach als link posten.
danke
-
Da hilft dir google bestimmt weiter
Erster Link:
http://support.microsoft.com/default.aspx?scid=kb;EN-US;q240015Caipi
-
Zum Thema getline Bug:
http://www.dinkumware.com/vc_fixes.html
http://fara.cs.uni-potsdam.de/~kaufmann/progs/STLFix.ZIPZum Thema:
while(!dat.eof())
http://fara.cs.uni-potsdam.de/~kaufmann/?page=GenCppFaqs&faq=eof#Answ