Heim >Backend-Entwicklung >C++ >Wie kann ich die Größe einer Datei mit der Funktion „tellg()' von C genau bestimmen?
tellg()-Fehlinterpretation bei der Schätzung der Dateigröße
Die tellg()-Funktion in C ist so konzipiert, dass sie einen Tokenwert zurückgibt, der einen bestimmten Wert darstellt Position innerhalb einer Datei. Dieser Wert kann verwendet werden, um später mit der Funktion seeng() zu dieser Position zurückzukehren. Es ist jedoch wichtig zu beachten, dass tellg() nicht direkt die Größe einer Datei in Bytes bereitstellt.
Im bereitgestellten Code:
void read_file(const char* name, int *size, char*& buffer) { ifstream file; file.open(name, ios::in | ios::binary); *size = 0; if (file.is_open()) { // Get length of file file.seekg(0, std::ios_base::end); int length = *size = file.tellg(); file.seekg(0, std::ios_base::beg); // Allocate buffer in size of file buffer = new char[length]; // Read file.read(buffer, length); cout << file.gcount() << endl; } file.close(); }
Der Aufruf von file.tellg() wird verwendet, um die Größe der Datei abzuschätzen. Dieser Ansatz ist jedoch falsch, da tellg() die Dateigröße nicht direkt zurückgibt.
Richtiger Ansatz zur Bestimmung der Dateigröße
Um die Größe einer Datei genau zu bestimmen in Bytes wird empfohlen, den folgenden Ansatz zu verwenden:
#include <limits> file.ignore(std::numeric_limits<std::streamsize>::max()); std::streamsize length = file.gcount(); file.clear(); // Since ignore will have set eof. file.seekg(0, std::ios_base::beg);
Dieser Code liest die Datei bis zum Ende und die Funktion gcount() gibt die Datei zurück Anzahl der gelesenen Bytes. Dieser Wert stellt die tatsächliche Größe der Datei dar.
Zusätzliche Hinweise
Das obige ist der detaillierte Inhalt vonWie kann ich die Größe einer Datei mit der Funktion „tellg()' von C genau bestimmen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!