Warum gibt tellg() eine ungenaue Dateigröße zurück?
Im Zusammenhang mit der Dateiverwaltung wird häufig die Funktion tellg() verwendet um die aktuelle Position innerhalb einer Datei zu ermitteln. Bestimmte Implementierungen von tellg() können jedoch einen Wert zurückgeben, der die tatsächlich aus der Datei gelesene Datenmenge übersteigt.
Tellg() verstehen
Entgegen der landläufigen Meinung , tellg() meldet die Dateigröße nicht direkt. Stattdessen wird ein Tokenwert bereitgestellt, der es dem Benutzer ermöglicht, später zu derselben Stelle in der Datei zu navigieren. Die spezifische Interpretation dieses Werts variiert je nach Betriebssystem.
Unix vs. Windows
Auf Unix-Systemen gibt tellg() normalerweise den Offset in Bytes vom Anfang zurück die Datei. Im Gegensatz dazu stellt der zurückgegebene Wert unter Windows den Offset nur für Dateien dar, die im Binärmodus geöffnet wurden. Bei Dateien im Textmodus meldet tellg() möglicherweise einen beliebigen Wert, der größer als die tatsächliche Byteanzahl ist.
Bestimmen der Dateigröße
Um die Dateigröße genau zu ermitteln, Erwägen Sie die Verwendung des folgenden Ansatzes:
#include <limits> file.ignore(std::numeric_limits<std::streamsize>::max()); std::streamsize length = file.gcount(); file.clear(); // Reset eof flag set by ignore file.seekg(0, std::ios_base::beg);
Zusätzlich Überlegungen
Das obige ist der detaillierte Inhalt vonWarum gibt „tellg()' manchmal eine falsche Dateigröße zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!