gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 14:12:21 29 4
gpt4 key购买 nike

对于我当前的任务,我需要能够读/写(主要是基于文件的)比特流。虽然如果用标准 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++ 不支持比单个字节 (char) 更小的实体。即使是 bool 类型也不是一个位,因为它必须是可寻址的。

关于c++ - Boost.Iostreams 与 iostream/streambuf 重载比特流 I/O,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13582358/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com