Câu trả lời đơn giản là không. Chính xác hơn, hệ thống phụ thuộc: dưới Unix, có thể (ví dụ: sử dụng stat
); dưới Windows, không phải là đối với tệp văn bản, nhưng nếu bạn đang đọc tệp dưới dạng nhị phân, có chức năng GetFileSize
có thể được sử dụng.
Mặc dù không được bảo đảm, dưới tất cả các hiện thực Tôi biết (ví hai nền tảng này), tìm cách kết thúc của tập tin, sau đó làm một ftell
, sẽ trở lại một cái gì đó mà khi chuyển đổi sang một thể thiếu đủ lớn loại, sẽ cho kết quả tương tự như trên (với các hạn chế tương tự ).
Cuối cùng: tại sao bạn cần thông tin này? Nếu chỉ phân bổ một bộ đệm có kích thước thích hợp , ngay cả với tệp văn bản, GetFileSize
(và tell
sau khi tìm kiếm kết thúc) sẽ trả lại giá trị lớn hơn hơn số byte bạn có thể đọc. Bạn là bộ đệm sẽ hơi quá khổ, nhưng điều này thường không phải là một vấn đề.
Nguồn
2012-02-03 16:49:28
Trong tiêu chuẩn thuần túy C++ hoặc API hệ điều hành cụ thể cũng được chấp nhận? Có các chức năng không di động (ví dụ: ['GetFileSizeEx()'] (http://msdn.microsoft.com/en-us/library/windows/desktop/aa364957 (v = vs.85) .aspx)) để nhận kích thước tệp. –
Bạn muốn nhận kích thước của tệp? –
Vâng, đó là bài tập về nhà và tôi không được phép sử dụng API. Tất cả những gì tôi được phép sử dụng là chức năng iostream và fstream. Thậm chí không dây. – SpeedBirdNine