1

对于我当前的任务,我需要有可能读/写(主要是基于文件的)比特流。虽然如果用标准 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 派生。

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

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

谢谢!

4

1 回答 1

0

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

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

于 2012-11-27T10:58:53.487 回答