zlib 的使用

22 篇文章 1 订阅
1. 下载zlib,附件是zlib 1.2.3 .  linux中一般系统自带,可直接使用
2. 解压代码,打开 .\projects\visualc6\zlib.dsw .
3. Build : zlib Lib Debug / zlib Lib Release ,生成的zlib.lib/zlibd.lib .
4. 在我们的工程中包含头文件 zlib.h / zconf.h ,和连接生成的Lib .
5. 测试代码
Write to file :
char * pchData = "xxx..." ;
gzFile fData = gzopen(pchFile,"wb");
gzwrite(fData,pchData,strlen(pchData));
gzclose(fData);
read from file :
char pchData[1024];
gzFile fData = gzopen(pchFile,"rb");
int n = gzread(fData,pchData,1024);
gzclose(fData);
Buffer test :
#include <zlib.h>

//原始数据
unsigned char pchSrc[] = "xxx...." ;
unsigned long nSrcLen = sizeof(pchSrc);

//压缩之后的数据
unsigned char achComp[1024];
unsigned long nCompLen = 1024 ;

//解压缩之后的数据
unsigned char achUncomp[1024];
unsigned long nUncompLen = 1024 ;

//压缩
compress(achComp,&nCompLen, pchSrc,nSrcLen);

//解压缩
uncompress(achUncomp,&nUncompLen, achComp,nCompLen);

//显示原始数据信息
printf("原始数据(%d):\n%s\n\n", nSrcLen,pchSrc);

//显示压缩之后的数据
printf("压缩数据(%d):\n%s\n\n", nCompLen,achComp);

//显示解压缩之后的数据
printf("解压数据(%d):\n%s\n\n", nUncompLen,achUncomp);
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C++中使用zlib库可以实现数据的压缩和解压缩。下面是一个简单的示例代码: ```cpp #include <iostream> #include <fstream> #include <string> #include <zlib.h> // 压缩函数 bool compressFile(const std::string& sourceFile, const std::string& destFile) { std::ifstream inFile(sourceFile, std::ios::binary); std::ofstream outFile(destFile, std::ios::binary); if (!inFile || !outFile) { return false; } z_stream stream; stream.zalloc = Z_NULL; stream.zfree = Z_NULL; stream.opaque = Z_NULL; if (deflateInit(&stream, Z_DEFAULT_COMPRESSION) != Z_OK) { return false; } char inBuffer[1024]; char outBuffer[1024]; stream.avail_in = inFile.readsome(inBuffer, sizeof(inBuffer)); stream.next_in = reinterpret_cast<Bytef*>(inBuffer); do { stream.avail_out = sizeof(outBuffer); stream.next_out = reinterpret_cast<Bytef*>(outBuffer); deflate(&stream, Z_FINISH); outFile.write(outBuffer, sizeof(outBuffer) - stream.avail_out); } while (stream.avail_out == 0); deflateEnd(&stream); inFile.close(); outFile.close(); return true; } // 解压缩函数 bool decompressFile(const std::string& sourceFile, const std::string& destFile) { std::ifstream inFile(sourceFile, std::ios::binary); std::ofstream outFile(destFile, std::ios::binary); if (!inFile || !outFile) { return false; } z_stream stream; stream.zalloc = Z_NULL; stream.zfree = Z_NULL; stream.opaque = Z_NULL; if (inflateInit(&stream) != Z_OK) { return false; } char inBuffer[1024]; char outBuffer[1024]; stream.avail_in = inFile.readsome(inBuffer, sizeof(inBuffer)); stream.next_in = reinterpret_cast<Bytef*>(inBuffer); do { stream.avail_out = sizeof(outBuffer); stream.next_out = reinterpret_cast<Bytef*>(outBuffer); inflate(&stream, Z_NO_FLUSH); outFile.write(outBuffer, sizeof(outBuffer) - stream.avail_out); } while (stream.avail_out == 0); inflateEnd(&stream); inFile.close(); outFile.close(); return true; } int main() { std::string sourceFile = "input.txt"; std::string compressedFile = "compressed.zlib"; std::string decompressedFile = "decompressed.txt"; // 压缩文件 if (compressFile(sourceFile, compressedFile)) { std::cout << "File compressed successfully." << std::endl; } else { std::cout << "Failed to compress file." << std::endl; } // 解压缩文件 if (decompressFile(compressedFile, decompressedFile)) { std::cout << "File decompressed successfully." << std::endl; } else { std::cout << "Failed to decompress file." << std::endl; } return 0; } ``` 这个示例代码演示了如何使用zlib库进行文件的压缩和解压缩。你可以根据自己的需求修改输入输出文件的路径和名称。在压缩文件时,使用`deflate`函数将输入数据压缩,并将压缩后的数据写入输出文件。在解压缩文件时,使用`inflate`函数将压缩数据解压缩,并将解压缩后的数据写入输出文件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值