Maison >développement back-end >C++ >Comment puis-je déterminer avec précision la taille d'un fichier à l'aide de la fonction `tellg()` de C ?
interprétation erronée de tellg() dans l'estimation de la taille du fichier
La fonction tellg() en C est conçue pour renvoyer une valeur de jeton qui représente un position dans un fichier. Cette valeur peut être utilisée pour revenir ultérieurement à cette position à l'aide de la fonction seekg(). Cependant, il est important de noter que tellg() ne fournit pas directement la taille d'un fichier en octets.
Dans le code fourni :
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(); }
L'appel à file.tellg() est utilisé pour estimer la taille du fichier. Cependant, cette approche est incorrecte car tellg() ne renvoie pas directement la taille du fichier.
Approche correcte pour déterminer la taille du fichier
Pour déterminer avec précision la taille d'un fichier en octets, il est recommandé d'utiliser l'approche suivante :
#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);
Ce code lit le fichier jusqu'à la fin, et la fonction gcount() renvoie le nombre d'octets lire. Cette valeur représente la taille réelle du fichier.
Notes supplémentaires
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!