Text zeilenweise lesen - was stimmt an meinem Code nicht ?
-
@kingruedi: auch auf die Gefahr hin, daß ich Dich wiederhole (sorry)
@G.Ben: was ist den bei Dir 'filePathOpen'??
vielleicht hilft dir das:void manageLDIF(){ char buffer[2000]; buffer[0] = 12; bool firstFlag = false; char * filePathOpen="H:/outf/open.txt", * filePathSave="H:/outf/save.txt"; fstream input_file(filePathOpen,ios::in);//open file for read access /*warum nicht gleich: ifstream input_file(filePathOpen); */ fstream output_file(filePathSave,ios::out);//open file for write access /*warum nicht gleich: ofstream input_file(filePathSave); */ if (firstFlag == false){ firstFlag = true; input_file.getline(buffer,2000); //manageLine(buffer); }//process first line while(0/*hier fehlt doch was*/){ input_file.getline(buffer,2000); }//process rest of file //input_file.close(); //ich glaube man braucht kein explizites close() bei fstreams //output_file.close(); }//manageLDIF - main file process method
-
Danke für eure Antworten.
Ich kann keine explizite Fehlermeldung angeben, weil es keine gibt.
Das Problem is das wenn ich kompilieren, DEVC++ die Header-Datei fstream.h öffnen und mit diese Zeile makiert ohne nähere Erklärung:include "backward_warning.h"
Daher kann ich den Fehler auch nicht näher eingrenzen. Das mit der while-schleife stimmt natürlich, das kommt aber erst später.
Und ja die File-Vars sind global, wobei das aber kein Problem sein dürfte.Ich werd mir mal die Änderungen anschaun und ausprobieren.
Danke nochmal,
G.Ben
-
du verwendest die veralteten Header
http://fara.cs.uni-potsdam.de/~kaufmann/?page=GenCppFaqs&faq=iostream#Answ
-
Vielen dank für diesen Tip, er hat meine Probleme gelöst !!
Ausserdem hab ich nun die manageLDIF-Methode nochmal umgeschrieben.Sieht nun so aus:
void manageLDIF(char filePathOpen[1024], char filePathSave[1024]){ char buffer[2000]; ifstream input_file(filePathOpen);//open file for read access ofstream output_file(filePathSave);//open file for write access while (input_file.eof()){ input_file.getline(buffer,2000); manageLine(buffer); }//process file }//manageLDIF - main file process method
Danke an euch,
gruß G.Ben.
-
warum char foo[1024] und nicht char *foo
es macht ja keinen Sinn so die Pfade zu beschränken.
btw. std::string solltest du dir angucken und schau dir nochmal deine while Bedingung an
-
wie wäre es mit
while( !(input_file.eof()) ){...}
oder noch besser:
while( input_file.getline(buffer,2000) ){...}
-
Okay ihr habt natürlich recht was die while-schleife angeht
Wenn ich ehrlich bin bin ich noch nicht so sicher im rumpointern. Deswegen hab ich mir einfach ein char[] mit fester größe genommen.
Könnt ihr mir vielleicht ein kleines Beispiel zeigen ?
-
-
Beispiel wofür?
meinst Du vielleicht das:void manageLDIF(char * filePathOpen, char * filePathSave){...}
und der Rest bleibt genauso
-
Okay, ich habs nun mit char* gemacht. Das einzige Problem das ich bei der Lösung sehe, is das der Kompiler einem nicht mehr eine Fehlermeldung schmeißt wenn man z.B. den Bereich des Arrays verlasst.
Aber da muss man wohl einfach aufpassen.
Danke,CU