Datei bearbeiten
-
Hallo
Ich hab da mal ein paar Fragen an euch:
Ich habe eine Textdatei, die ich auslesen will und an deren Ende etwas schreiben möchte. Im nächsten Schritt will dieses Geschriebene löschen oder überschreiben( ohne den vorhergehenden Text zu löschen).
Muss ich um dieses Problem zu lösen die Länge des Textes herausfinden und wenn ja wie mache ich das?
-
Du musst den gesamten text einlesen, kannst ihn dann nachbelieben verändern (was anhängen, reinschreiben, ersetzen...) und am ende die alte datei überschreiben.
-
Wie lese ich den gesamten Text ein? ...habe ich dann nicht unmengen von Strings?
Wie lege ich fest das bis an das Ende der Datei eingelesen wird, ohne das ich weis wieviel Zeilen es sind?MfG
-
Lies doch einfach mal den FAQ-Beitrag Ströme und Dateien in C++
-
Du kannst den Text zeilenweise mit getline() einlesen und dann in einen vector<> oder ähnliches unterbringen - die IO-Streams werden dir schon rechtzeitig sagen, wenn du damit fertig bist:
vector<string> datei_inhalt; fstream datei; //Datei einlesen: datei.open("daten.txt",ios::in); string zeile; while(getline(datei,zeile))//das liest bist zum Dateiende datei_inhalt.push_back(zeile); //Datei zurückschreiben: datei.open("daten.txt",ios::out); copy(datei_inhalt.begin(),datei_inhalt.end(),ostream_iterator<string>(datei,"\n"));