Sizeof liefert zu kleinen Wert - warum
-
Moin Moin!
Ich habe mittels "ofstream" einige tausend unsigned int Werte in eine Datei geschrieben. Wenn ich mir diese Datei im Hexeditor ansehe, scheinen auch alle Werte gespeichert zu sein.
Lese ich diese Datei denn mit ifstream wieder ein und versuche mit sizeof die Größe der Datei herauszufinden bekomme ich nur 280 angezeigt.
ifstream ifl(datei.dat, ios::binary); cerr << sizeof(ifl);
Weiß jemand warum ???
Grüße!
-
sizeof(ifl) gibt die Größe des Objektes ifl an, also die Größe einer Instanz der Klasse ifstream, nicht die Größe der geöffneten Datei.
-
Weil du sizeof falsch verstanden hast. sizeof liefert die Größe, die ein Objekt im Speicher benötigt im Verhältnis zu einem char.
sizeof ist kein Operator um Größenangaben einem Container oä. zu entlocken!
-
Danke für die schnellen Reaktionen.
Schade, wär so einfach gewesen. Ist in meinem Buch aber auch nicht wirklich gut erklärt.
Gibt es eine einfache Möglichkeit, die Dateigröße bzw. die Anzahl der darin befindlichen Zahlen bzw. Daten zu ermitteln??
Grüße
-
Nicht portabel, aber besser als nichts:
mit seekg ans Ende gehen, und mit tellg die Position ermitteln.
-
Prima!! Ich werds mal versuchen.
-
Bashar schrieb:
mit seekg ans Ende gehen, und mit tellg die Position ermitteln.
Code für die Umsetzung dieser Vorgehensweise findest du in unseren FAQ:
http://www.c-plusplus.net/forum/viewtopic.php?t=39469