对于我目前的任务,我需要有可能读/写(主要是基于文件的)比特流。 虽然如果使用标准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
}
但是我不确定要走哪条路:
到目前为止,我从来没有必须派生/提供我自己的流类,但我想改进我的 知识...
也许有人可以提供一些指示或提示,以便选择哪种方式以及为什么!?
谢谢!
答案 0 :(得分:0)
你最好的选择可能是让两个成为一个新的流类和一个流缓冲类。使用自定义流类重载输出运算符以将一个位放在自定义流缓冲区中。
原因是C ++不支持比单个字节(char
)更小的实体。即使bool
类型也不是一个位,因为它必须是可寻址的。