fstream.write : Unerwartete Dateigröße

Nukleo

Mitglied
Hi Leute,

Folgendes Problem: ich erzeuge mir eine Datei:

Code:
fstream rdb((filename+".rdb").c_str(), ios::out);
rdb.close()

später öffne ich sie um daten hinein zuschreiben. Zunächst wird direkt ein Objekt dbh geschschrieben:

Code:
fstream rdb((filename+".rdb").c_str(), ios::app);
rdb.write((char*)&dbh,sizeof(dbh));

in einer Schleife schreibe ich dann eine Menge von Objekten aus einem Container:

Code:
std::list<S>::iterator it = objects.begin();

do
{
     rdb.write((char*)&(*it),sizeof(S));
     it++;
}
while(it != objects.end());

Nun mein Problem: Ich schreibe zu testzwecken zunächst 10 mal das gleiche Objekt in die Datei, dann 100 mal und auf einmal hat die Datei mind. ein Byte zu viel. Das Auslesen der Objekte klappt dann natürlich auch nicht mehr richtig.

Gibts dafür ne plausible Erklärung?

Vielen Dank und besten Gruß
Emu
 
Hi.

Dieses Phänomen könnte auftreten wenn die Liste leer ist (und du zufällig von einem SEGFAULT verschont bleibst).

Gruß
 
Zurück