网络上找到的好多方法在解压缩字符串的时候会丢失字符,这里是解决方法:
http://stackoverflow.com/questions/21186535/compressing-decompressing-char-array-using-zlib-some-characters-missing
基于此,笔者修改了一下,由于是初学者,只按照编译器不报错的原则修改了一下,能运行
打开vc++6.0新建控制台程序程序,配置好zdll.lib,把zlib1.dll放置到合适的位置主程序main.cpp如下#include <string.h> #include <stdio.h> #include <stdlib.h> #include "zlib.h" int main() { const char *istream = "some foo汉字"; uLong srcLen = strlen(istream)+1; // +1 for the trailing `\0` uLong destLen = compressBound(srcLen); // this is how you should estimate size // needed for the buffer unsigned char* ostream = (unsigned char*)malloc(destLen); int res = compress(ostream, &destLen, (const unsigned char *)istream, srcLen); // destLen is now the size of actuall buffer needed for compression // you don‘t want to uncompress whole buffer later, just the used part if(res == Z_BUF_ERROR){ printf("Buffer was too small!\n"); return 1; } if(res == Z_MEM_ERROR){ printf("Not enough memory for compression!\n"); return 2; } unsigned char *i2stream = ostream; char* o2stream = (char *)malloc(srcLen); uLong destLen2 = destLen; //destLen is the actual size of the compressed buffer int des = uncompress((unsigned char *)o2stream, &srcLen, i2stream, destLen2); printf("%s\n", o2stream); return 0; }
时间: 2024-10-11 16:30:40