Tôi đang sử dụng Linux và C++. Tôi có một tập tin nhị phân với kích thước của 210.732 byte, nhưng kích thước báo cáo với seekg/tellg là 210728.C++: Nhận kích thước tệp không chính xác
tôi nhận được các thông tin sau từ ls-la, tức là 210.732 byte:
-rw -rw-r-- 1 PJS PJS 210.732 17 tháng 2 10:25 output.osr
Và với đoạn mã sau, tôi nhận được 210.728:
std::ifstream handle;
handle.open("output.osr", std::ios::binary | std::ios::in);
handle.seekg(0, std::ios::end);
std::cout << "file size:" << static_cast<unsigned int>(handle.tellg()) << std::endl;
Vì vậy, mã của tôi là tắt của 4 byte . Tôi đã xác nhận rằng kích thước của tập tin là chính xác với một trình soạn thảo hex. Vậy tại sao tôi không nhận được kích thước chính xác?
Câu trả lời của tôi: Tôi nghĩ rằng vấn đề là do có nhiều fstream mở cho tệp. Ít nhất điều đó dường như đã sắp xếp nó ra cho tôi. Cảm ơn mọi người đã giúp đỡ.
Đây có phải là trường hợp trên tất cả các hệ thống tập tin (trong trường hợp bạn có một số)? – hlovdal
Thật không may, tôi không có tùy chọn để kiểm tra trên một hệ thống tệp khác. – PSJ
Hoạt động tốt trên hệ thống Ubuntu 32 bit của tôi. Bạn có sử dụng g ++? – tur1ng