Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Menentukan Saiz Fail Dengan Tepat Menggunakan Fungsi `tellg()` C?
Tellg() Salah Tafsiran dalam Menganggar Saiz Fail
Fungsi tellg() dalam C direka untuk mengembalikan nilai token yang mewakili sesuatu kedudukan dalam fail. Nilai ini boleh digunakan untuk melompat kembali ke kedudukan itu kemudian menggunakan fungsi seekg(). Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa tellg() tidak memberikan saiz fail secara langsung dalam bait.
Dalam kod yang disediakan:
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(); }
Panggilan ke fail.tellg() digunakan untuk menganggar saiz fail. Walau bagaimanapun, pendekatan ini tidak betul kerana tellg() tidak mengembalikan saiz fail secara langsung.
Pendekatan Betul untuk Menentukan Saiz Fail
Untuk menentukan saiz fail dengan tepat dalam bait, adalah disyorkan untuk menggunakan pendekatan berikut:
#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);
Kod ini membaca fail sehingga tamat, dan fungsi gcount() mengembalikan bilangan bait yang dibaca. Nilai ini mewakili saiz sebenar fail.
Nota Tambahan
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menentukan Saiz Fail Dengan Tepat Menggunakan Fungsi `tellg()` C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!