一点一点写入文件

时间:2019-03-06 14:26:07

标签: c++ bit-manipulation fstream

我正在用C ++实现一个熵编码模块。

代码产生的0和1的流,我想输出到文件中。

由于只能写入整个字节(?),因此需要一些缓存。我在想这样的事情:

struct out_cache_t {
    uint8_t cache = 0;
    uint8_t count = 0;
};

inline void cached_output(const int bit, out_cache_t &out_cache, std::ofstream &out) {
    out_cache.cache <<= 1;
    out_cache.cache |= bit;
    out_cache.count += 1;
    if (out_cache.count == 8) {
        out.write((char*)&out_cache.cache, 1);
        out_cache.count = 0;
    }
}

void encode(...) {
  out_cache_t out_cache;
  std::ofstream out("output.txt");
  // ... do encoding ...
  if ( ... need to write 1 ... ) {
    cached_output(1, out_cache, out);
  } else if ( ... need to write 0 ... ) {
    cached_output(0, out_cache, out);
  }
  // ... more stuff ...
}

但是我想知道,是否在标准库中内置了一些更简单或可能更有效的方法?人们在这种情况下通常会做什么?

(请注意,我通常使用Python进行编程,因此我对C ++的方法不太熟悉)

0 个答案:

没有答案