【问题标题】:Uncompressing zlib data using boost::iostreams::filtering_streambuf trouble使用 boost::iostreams::filtering_streambuf 解压 zlib 数据的麻烦
【发布时间】:2012-03-19 20:42:36
【问题描述】:

我正在尝试编写一个小类,该类将从我的世界文件的一部分加载块数据。我已经将一些数据存储在一个用 zlib 压缩的 char 数组中并且需要解压缩它。

我正在尝试使用 boost filtering_streambuf 来执行此操作。

char * rawChunk = new char[length - 1];

// Load chunk data


stringstream ssRawChunk(rawChunk);

boost::iostreams::filtering_istream in;

in.push(boost::iostreams::zlib_decompressor());
in.push(ssRawChunk);

stringstream ssOut;

boost::iostreams::copy(in, ssOut);

我的问题是rawChunk 包含null 数据,因此在将数据从(char*) rawChunk 处理到(stringstream) ssRawChunk 时,它会以~257 而不是预期的长度2154 终止。

有没有办法在没有 stringstream 的情况下使用 filtering_streambuf 来允许 null 数据,或者有没有办法阻止 stringstream 不终止 null 数据?

【问题讨论】:

标签: c++ boost zlib stringstream


【解决方案1】:

您应该将rawChunk 存储到允许空字符的std::string 中。

【讨论】:

  • 我先尝试使用string,然后将其放入stringstream,但它仍会在第一个null 值处终止,就像我的第一个示例一样。我正在尝试上面评论中给出的示例,但遇到了麻烦。
猜你喜欢
  • 2012-09-14
  • 2020-07-19
  • 1970-01-01
  • 2011-08-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多