Có cách nào tốt hơn để xác định độ dài của một std :: istream hơn như sau:Cách tốt hơn để xác định chiều dài của một tiêu chuẩn :: istream?
std::istream* pcStream = GetSomeStream();
pcStream->seekg(0, ios::end);
unsigned int uiLength = pcStream->tellg();
Nó chỉ có vẻ thực sự lãng phí phải tìm cách kết thúc của dòng và sau đó tìm cách trở lại với bản gốc vị trí, đặc biệt nếu luồng có thể là một tệp trên một số phương tiện chậm như CD hoặc DVD.
Tại sao bạn cần độ dài? – sbi
API tôi đang sử dụng yêu cầu kích thước của dữ liệu tôi đang chuyển. Nó sử dụng một bộ đệm ký tự thô, và tiếp tục xử lý nó cho đến khi nó đến cuối bộ đệm. – FlintZA
Bạn có thể sử dụng 'stat()' trên tệp. Tuy nhiên, nó không phải là bất kỳ nhanh hơn tìm kiếm ở cuối và tìm kiếm lại ở đầu trước khi đọc nội dung ... đó là cách mô tả tập tin được thực hiện. Tất nhiên, 'stat()' không phải là C++ và nó đòi hỏi một tên tập tin ... –