tellg() 估计文件大小的误解
C 中的tellg() 函数旨在返回代表特定值的标记值文件内的位置。稍后可使用该值使用eekg() 函数跳回到该位置。但需要注意的是,tellg() 并不直接提供文件的大小(以字节为单位)。
在提供的代码中:
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(); }
对 file.tellg() 的调用用于估计文件的大小。然而,这种方法是不正确的,因为tellg()不会直接返回文件大小。
确定文件大小的正确方法
准确确定文件的大小以字节为单位,建议使用以下方法:
#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);
此代码读取文件直到末尾,并且 gcount()函数返回读取的字节数。该值代表文件的实际大小。
附加说明
以上是如何使用 C 的 `tellg()` 函数准确确定文件的大小?的详细内容。更多信息请关注PHP中文网其他相关文章!