In Datei auf bestimmte Stelle springen
-
Hi!
ich öffne die Datei mit ofstream zum schreiben.
Es steht bereits text drinnen. Jetzt will ich beispielsweise vom Start weg 5 Zeichen nach vorne springen, und von dort aus anfangen Text einfügen.
Ich glaub wenn ich einfügen will an der Stelle, einfach öffnen mit ios::app, ansonsten mit ios::out, richtig?
Jetzt brauche ich nur die Operation, um Zeichen nach vorne zu springen.
mfg XaTrIxX
-
XaTrIxX schrieb:
Ich glaub wenn ich einfügen will an der Stelle, einfach öffnen mit ios::app, ansonsten mit ios::out, richtig?
ios::app setzt den zeiger auf das ende der datei.
Jetzt brauche ich nur die Operation, um Zeichen nach vorne zu springen.
ostream::seekp
-
Einfügen wird eng. Du würdest an eine Stelle springen und dort die Daten überschreiben. Einfügen ist praktisch nur möglich durch kopieren...
-
Es werden die Zeichen, die ich mit seekp überspringen will einfach als leerzeichen neu gespeichert. Frage ist warum...
Code:
ofstream schreiben; schreiben.open("/win.ini", ios::out|ios::binary); if(!schreiben) { cout << "Die Datei konnte nicht geöffnet werden! \n"; } schreiben.seekp (10, ios::beg); while(i<10) { schreiben << mal; //mal ist ein Sring "abcd" i++; }Die Datei sah vorher so aus:
qqqqqqqqqqqqqqqqqqqqqqqund jetzt so:
abcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdMein Ziel wäre das:
qqqqqqqqqqabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdWenn ich schreiben.open mit ios::app öffne dann wird angehängt als wär nichts, springt mit dem zeiger wahrscheinlich schon nach ganz hinten.
Bitte um Tipps
-
Wenn Du ohne ios::app die Datei öffnest, dann geht der vorherige Inhalt verloren. Dazu öffne mit ios::app und spring an die Stelle, wo Du hinwillst.
ofstream out(filename, ios::app); // ios::app springt ans ende out << "das steht ganz hinten";