Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

12.07.2007, 23:55

[fstream] Datei an bestimmter Stelle überschreiben

Ich bin gerade dabei einen kleinen(!) savegameeditor zu schreiben. Leider habe ich jetzt ein Problem mit fstreams. Ich müsste eben eine Binärdatei an einer Selle überschreiben. Das laden von einer bestimmten Stelle geht schon mal ganz gut, aber das schreibne nicht.

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
//laden

File.seekg(0x54 , std::ios::beg);
File.read((char*)&iBuffer, 4);
Buffer.str("");
Buffer << iBuffer;

//schreiben

Buffer.str("");
Buffer << Punkte->text();
Buffer >> iBuffer;
File.seekp(0x54, std::ios::beg);
File.write((char*)&iBuffer, 4);

File ist ein fstream, Buffer ein Stringstream, iBuffer ein Integer, Punkte ein Eingabefeld, in dem die neuen Punkte eingegeben werdne sollen.
Das Problem beim Schreiben ist, dass entweder die Datei komplett überschrieben wird (d.h. sie enthält nur dort, wo ich etwas neues Schreibe die entsprechenden Werte, alles davor ist 0, alles was dahinter hätte stehen sollen ist einfach nciht mehr da) oder es wird unabhängig von der Position alles einfach nur hinten dran gehängt.
Die Datei komplett in den Hauptspeicher lesen und dann wiederkomplett schreiben wollte ich möglichst verhindern.
Ich habe quasi schon alle Ladeparameter ausprobiert, die man bei open so angebne kann, es trat immer einer der beidne Effekte auf :-(

Achja, hier die Originalfrage, im JLI Fourm: http://www.jliforum.de/board/viewtopic.php?t=5140
Lieber dumm fragen, als dumm bleiben!

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

2

13.07.2007, 07:48

Wie hast du die Datei geöffnet?

So sollte das imo funktionieren:

C-/C++-Quelltext

1
std::fstream stream( "test.txt", std::ios::in | std::ios::out );
@D13_Dreinig