Dateizeiger mit C++ positionieren? Bitte um Hilfe
-
Hey @all,
ich habe wahrscheinlich ein winziges Problem, jedoch bräuchte ich dafür Eure Hilfe, da ich momentan so ziemlich am Schlauche stehe;)
Und zwar wollte ich meine Daten in einer XML-Datei (oder ähnlichem Aufbau) speichern, und vor dem letzten TAG Informationen hinzufügen. Der Letzte Tag lautet "</myProg>"
Hier mal der Code://---------------------- // Append to an file //---------------------- ofstream file(this->Filename.c_str(), ios_base::app); if(file) { file.seekp(-9, ios_base::end); file << " <color>" << this->Foreground << "</color>" << endl; file << " <bgcolor>" << this->Background << "</bgcolor>" << endl; file.close(); }
Jedoch sieht es danach folgendermaßen aus
<myProg> <...></...> <...></...> </myProg> <color>#FFFF00</color> <bgcolor>#000000</bgcolor>
Und so sollte es aussehen:
<myProg> <...></...> <...></...> <color>#FFFF00</color> <bgcolor>#000000</bgcolor> </myProg>
Könnte mir bitte jemand helfen
Vielen dank im Voraus
MfG smog_at
-
bleibt dir wohl nichts anderes übrig, als das ganze irgendwo zwischenzuspeichern, den inhalt der datei zu löschen und dann alles zusammengehängt wieder zu speichern. Oder du überschreibst </myprog> am ende mit deinen daten und hängst es danach wieder an (ich glaube, dazu brauchst du die methode write und musst die stelle suchen, an der der letzte tag ist. Ich weiß nicht, ob das so schön ist)
geloescht
-
Für was gibt es dann die Funktionen, um den Dateizeiger zu positionieren?
Ich hoffe doch nicht, das das nur beim Lesen funktioniert?MfG smog_at
-
mit seekp kannst du den zeiger an eine bestimmte position relativ zum dateianfang (mit der anderen überladung auch relativ zum ende u.ä.) setzen. aber du weißt ja garnicht wo der abschlusstag steht! du könntest aber mit file.seekp(-9, ios::end) die position vor dem abschlusstag herausfinden, angenommen die datei hört wirklich mit </myprog> auf! Dann könntest du die zusätzlichen daten schreiben und danach wieder </myprogr> ans ende der datei schreiben.
geloescht
-
OK, nur wird "</myProg>" nicht überschrieben, sonder es wird hinten dran gehängt. Ausserdem weiss ich, das "</myProg>" am Ende der Datei steht, weil ich die Datei schreibe, soll quasi eine Konfigurationsdatei für mein Proggi werden.
MfG smog_at
-
nimm mal statt ios::app ios::ate. Ich glaube, ios::app setzt den Zeiger jedesmal vor dem schreiben aufs ende.
geloescht