[英]Using custom seekable source boost::iostreams::stream
如果我想使用boost :: iostreams :: stream的自定義可搜索源,需要實現哪些方法? 我查看了Boost的無法搜索的源緩沖區教程 ,並嘗試將標記修改為input_seekable
並添加了本教程中的seek
功能。 不幸的是,這導致我的編譯器抱怨缺少get
函數,我找不到文檔(從編譯器錯誤消息,我可以弄清楚簽名是什么,但就是這樣)。 這個功能應該做什么? 我還需要實現其他任何功能嗎?
此外,編譯器希望我有三個輸入參數來seek
; 第一個是*dev
,我認為它將由stream
本身提供。
設備標題:
class SourceBuffer
{
private:
FILE *file;
public:
typedef char char_type;
typedef boost::iostreams::input_seekable category;
SourceBuffer(const char *fileName);
SourceBuffer();
~SourceBuffer();
std::streamsize read(char *s, std::streamsize n);
boost::iostreams::stream_offset seek(boost::iostreams::stream_offset off, std::ios_base::seekdir way);
void open(const char *fileName);
void close();
protected:
}
用法:
boost::iostreams::stream<SourceBuffer> *example;
example = new boost::iostreams::stream<SourceBuffer>(fileName);
SeekableDevice
概念中記錄了確切的要求: http : //www.boost.org/doc/libs/1_58_0/libs/iostreams/doc/concepts/seekable_device.html
您可以查看列出的任何模型的實現,以獲取有關如何解決此問題的提示:
關於dev*
參數,似乎你在使用自由函數模板boost :: iostreams :: seek來混淆Device::seek
(你實現的是為了滿足這個概念)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.