daten in streams einfügen / in Dateien einfügen



  • Das Ziel ist es, in eine Datei eine Datensequenz einzufügen. Ist das Einfügen überhaupt möglich, oder ist quasi nur Überschreiben möglich und den Rest muss man dann wieder anhängen?
    Da ich mit <fstream> arbeiten möchte, schaute ich mich auch bei dessen Vorfahren <istream> und <ostream> um. Leider fand ich auch dort eigentlich keine Möglichkeit, in einen bereits vorhandenen Stream irgendwo Daten einzufügen.

    Wie konkret fügt man somit mitten in einer Datei ein paar Bytes ein (die Datei wird dann etwas grösser), ohne dass man quasi alles (oder das hinter dem Eingefügten) neu in die Datei schreiben muss? Was ist das eleganteste?

    Besten Dank!
    - Adrian



  • alles hinter der einfügestelle auslesen,neue daten einfügen, daten wieder anhängen. wie du bereits gesagt hast 😉



  • Da ein File die Daten sequentiell enthält, wird dir wohl nichts anderes übrig bleiben, als alles hinter der Einfügestelle manuell zu verschieben.

    Du kannst aber auch mal erzählen, was du genau vorhast - vielleicht gibt es für deinen speziellen Fall eine elegantere Lösung 🙂



  • Ich muss in einer einfachen art Datenbank (einfach eine speziell aufgebaute simple Datei) Datensätze einfügen.
    Nun habe ich es halt so gelöst, dass zuerst die gesamte Datei in den Speicher geladen wird, anschliessend im Speicher der Datensatz eingefügt wird und anschliessend die Datei komplett neu beschrieben wird... Da die Datei höchstens zwei drei MBytes gross wird, ist das zu verkraften...

    - Adrian



  • Wenn es dir nicht auf die Reihenfolge der Datensätze ankommt, kannst du sie auch immer ans Ende der vorhandenen Datei schreiben (oder evt. technisch gelöschte Datensätze mit neuen Werten überschreiben).



  • Danke für den Tipp, aber das geht leider nicht...
    - Adrian


Anmelden zum Antworten