fstream: zeile überschreiben



  • ich habe eine relativ große datei in der jede zeile 32 zeichen lang ist.
    nun will ich eine bestimmte zeile in der mitte erstzen (durch eine neue zeile der gleichen größe).
    das problem ist nun, dass ich nur weiß wie man am ende zeilen anfügen kann, nicht aber wie ich den mittelteil überschreibe.
    ich könnte die datei komplett neu schreiben, aber das erscheint mir unnötig, weil ich ja nur eine bestimmte stelle erstezen will und sogar die größe beibehalten wird.

    Wie mache ich das am geschicktesten?



  • Schau dir auf www.cppreference.com die Klasse std::fstream und die Methode seekp() (und Konsorten) an.



  • Wenn du eine Datei nur zum Schreiben öffnest, ist der Positonszeiger am Anfang. Du kannst diesen nun um x Zeichen vorwärts oder rückwärts bewegen, um an entsprechender Stelle deine Bytes zu schreiben.
    Siehe seekg.



  • Sofern dein Dokument nicht unzaehlige A4 Seiten lang ist wuerde ich einfach die ganze Datei neuschreiben.


Anmelden zum Antworten