【问题标题】:Boost.Iostreams vs. iostream/streambuf overloading for bitstream I/O用于比特流 I/O 的 Boost.Iostreams 与 iostream/streambuf 重载
【发布时间】:2012-11-27 10:37:58
【问题描述】:

对于我当前的任务,我需要能够读取/写入(主要是基于文件的)比特流。 虽然如果用标准 C/C++ 编码,这或多或少是一项微不足道的任务,但我想 通过重载和使用更通用的方法重写代码 标准的 STL iostream 或类似的,所以我可以写类似的东西

writeHeader();
{
    ofstream outfile ("test.bin");
    outfile << true; // Write 1 bit
    outfile << false; // Write 1 bit
    outfile << (char)0x42; // Write 8 bits
}

但是我不确定要走哪条路:

  1. 使用 Boost.IOStream 或
  2. 直接从 streambuf 或 iostream 派生。

到目前为止,我从来不需要派生/提供自己的流类,但我想改进我的 知识...

也许有人可以提供一些指针或提示,更喜欢哪种方式以及为什么!?

谢谢!

【问题讨论】:

    标签: c++ stl iostream boost-iostreams


    【解决方案1】:

    您最好的选择可能是让 成为一个新的流类和一个流缓冲区类。使用自定义流类重载输出运算符,将单个位放入自定义流缓冲区。

    原因是 C++ 不支持小于单个字节 (char) 的实体。即使bool 类型也不是一个位,因为它必须是可寻址的。

    【讨论】:

    • 感谢您的回答!你也有一个可以阅读它的指针吗?
    • @fhw72 我曾经有一个链接到一些很好的网站,详细的流和streambuf自定义,但不幸的是我似乎再也找不到了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-24
    • 1970-01-01
    • 2012-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多