簡體   English   中英

使用自定義可搜索源boost :: iostreams :: stream

[英]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

您可以查看列出的任何模型的實現,以獲取有關如何解決此問題的提示:

  • 陣列,
  • 文件,
  • 類file_descriptor,
  • 將mapped_file

關於dev*參數,似乎你在使用自由函數模板boost :: iostreams :: seek來混淆Device::seek (你實現的是為了滿足這個概念)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM