zlib 压缩而不写入磁盘

zlib Compress without writing to disk

我对 zLib 完全陌生,我对如何使用它感到困惑。 这就是我想用 C++ 做的事情,但没有写入磁盘,所以使用缓冲区或其他东西:

获取存储在 std::vector 中的整数向量,将其全部打印在文本文件中,每个元素之间有空格。使用 zLib 压缩它,然后将该压缩文件的大小(以字节为单位)保存到一个整数变量中,稍后用于计算等。

感谢任何帮助,谢谢:)

zlib 具有 compressuncompress 函数,它们接受输入和输出缓冲区的指针(以及每个缓冲区的最大大小)。

在你的情况下,我将从 std::stringstream 开始,将整数转换为文本形式(中间有空格)。然后使用该流的 .str() 将内容检索为字符串。使用字符串的 .c_str() 检索指向它包含的数据的指针,然后您可以将其传递给 compress.

对于目的地,它需要一个指向缓冲区的指针和一个指向 long int 的指针。它将压缩后的大小写入那个 long int,所以这就是您似乎想要保存以供以后计算之类的值。