mit ofstream Dateien manipulieren ohne deren Größe zu verändern?
-
Hallo,
ich habe folgendes Problem:
Ich habe eine Datei (sagen wir mal 2GB groß) und ich öffne diese nun mit ofstream. Wenn die mit dem flag trunc öffne dann wird die Datei quasi gelöscht und ihr alter Inhalt geht verloren.
Wenn ich sie mit app öffne werden bytes am Ende angehängt.Ich will aber die Datei in ihrer Größe belassen und nur an einer Beliebigen Stelle wenige Bytes verändern. Keine Option ist es die Datei komplett in den Speicher zu lesen, dort zu manipulieren und wieder komplett zu schreiben. Das scheidet auf Grund der Größe der Datei aus.
Kann mir jemand einen schubs in die richtige Richtig geben? Ich habe mittlerweile glaube ich alle Kombinationen an flags ausprobiert und auch im Netz keine Informationen gefunden.
DAnke.
Telor
-
std::ios::in | std::ios::out | std::ios::binary
-
und dann fstream statt ofstream
-
Du schreibst im Titel Größe ändern und im Text, dass du ein paar Bytes ändern willst.
Wenn es um das Verändern (nicht löschen oder einfügen) geht: Mit binary öffnen, an die richtige Stelle springen und ändern:
Keine Option ist es die Datei komplett in den Speicher zu lesen, dort zu manipulieren und wieder komplett zu schreiben.
Man kann auch gleichzeitig lesen und schreiben, ohne die Datei komplett im Speicher zu halten. Vielleicht hilft die dieser Ansatz weiter.
-
std::ios::in | std::ios::out | std::ios::binary
Super das wars. Vielen Dank.
Die Flags out und binary hatte ich schon drin. Es muß am "in"-Flag gelegen haben.