Boost.Iostreams与iostream / streambuf重载比特流I / O.

时间:2012-11-27 10:37:58

标签: c++ stl iostream boost-iostreams

对于我目前的任务,我需要有可能读/写(主要是基于文件的)比特流。 虽然如果使用标准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派生。
  3. 到目前为止,我从来没有必须派生/提供我自己的流类,但我想改进我的 知识...

    也许有人可以提供一些指示或提示,以便选择哪种方式以及为什么!?

    谢谢!

1 个答案:

答案 0 :(得分:0)

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

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