Tôi đang đọc một tập tin đã giải nén sử dụng iostreams tăng: Sau đây hoạt động tốt:Có thể tăng cường iostreams đọc và nén các tệp được nén trên máy bay không?
namespace io = boost::iostreams;
io::filtering_istream in;
in.push(boost::iostreams::basic_gzip_decompressor<>());
in.push(io::file_source("test.gz"));
stringstream ss;
copy(in, ss);
Tuy nhiên, tôi không muốn để có những hit ký ức về đọc toàn bộ tập tin đã giải nén vào bộ nhớ. Tôi muốn có thể đọc tập tin theo từng bước.
Ví dụ, nếu tôi có một cấu trúc dữ liệu X khởi thân từ istream,
X x;
x.read(in);
thất bại. Có lẽ điều này là bởi vì chúng tôi có thể phải đặt lại các ký tự vào dòng nếu chúng tôi đang thực hiện một phần luồng. Bất kỳ ý tưởng cho dù tăng iostreams hỗ trợ này?
Sẽ thực hiện một thao tác như gọi 'getline()' sau đó 'nén()' qua vòng lặp hoạt động cho bạn? – user99545
@ user99545: Không: vì X tự tạo từ dữ liệu nhị phân. – ATemp
Tôi không hiểu tại sao không. Tôi đã sử dụng tăng cường iostreams để đọc và viết các luồng nén zlib theo cách này. – Ferruccio