我已經定義了一個名爲ZipFileDevice的提升設備,它接收一個存檔路徑以及該存檔內文件的路徑。如何處理打開和關閉boost iostreams設備?
該設備定義讀取,寫入,尋找,採取兩個路徑和析構函數的構造函數。
我打開ZipFileDevice的構造函數中的zip文件,並在析構函數中關閉它。
這是我如何使用設備:
boost::iostreams::stream_buffer<ZipFileDevice> kBuff("path/to/archive", "path/to/file");
std::iostream kStream(&kBuff);
kStream.read(...);
我的問題是,ZipFileDevice是創建stream_buffer時複製兩次,並且副本被破壞,關閉zip文件。當我從流中讀取時,文件已關閉。
如何正確處理打開和關閉設備?