C++ zlib库 的使用方法 测试代码
时间: 2024-03-07 09:47:12 浏览: 70
以下是一个简单的使用 zlib 库的 C++ 示例代码,可以用于压缩和解压缩数据:
```cpp
#include <iostream>
#include <cstring>
#include <zlib.h>
int main() {
const char* source = "Hello, world!";
const unsigned long sourceLen = strlen(source) + 1; // 加上字符串末尾的 '\0'
unsigned long destLen = compressBound(sourceLen); // 预估压缩后的长度
char* dest = new char[destLen];
// 压缩数据
int ret = compress((Bytef*)dest, &destLen, (const Bytef*)source, sourceLen);
if (ret != Z_OK) {
std::cerr << "Compression failed." << std::endl;
return 1;
}
std::cout << "Compressed data: " << dest << std::endl;
// 解压缩数据
char* source2 = new char[sourceLen];
destLen = sourceLen;
ret = uncompress((Bytef*)source2, &destLen, (const Bytef*)dest, destLen);
if (ret != Z_OK) {
std::cerr << "Decompression failed." << std::endl;
return 1;
}
std::cout << "Decompressed data: " << source2 << std::endl;
delete[] dest;
delete[] source2;
return 0;
}
```
在这个例子中,我们首先定义了一个源数据 source,然后使用 compressBound 函数预估压缩后的长度,从而创建了一个足够大的目标数据缓冲区 dest。接着,我们使用 compress 函数压缩源数据,如果返回值不为 Z_OK,则表示压缩失败。最后,我们使用 uncompress 函数解压缩数据,同样如果返回值不为 Z_OK,则表示解压缩失败。
注意,在实际使用 zlib 库时,您可能需要更复杂的数据结构和算法,以及更多的错误处理和调试代码。此处仅提供一个简单的示例供参考。
阅读全文