我一直在尝试压缩字符串并将它们保存到文本文件中,然后读取数据并解压缩。但是,当我尝试解压缩读取的字符串时,我得到一个 Z_BUF_ERROR (-5) 并且该字符串可能会或可能不会解压缩。
在控制台中,我可以整天压缩/解压缩:
std::string s = zlib_compress("HELLO asdfasdf asdf asdfasd f asd f asd f awefo@8 892y*(@Y");
std::string e = zlib_decompress(s);
该字符串e
将毫无困难地返回原始字符串。
但是,当我这样做时:
zlib_decompress(readFile(filename));
我得到一个Z_BUF_ERROR
. 我认为这可能部分是由于文件中的隐藏字符,但我不太确定。
这是我的readFile
功能:
std::string readFile(std::string filename)
{
std::ifstream file;
file.open(filename.c_str(), std::ios::binary);
file.seekg (0, std::ios::end);
int length = file.tellg();
file.seekg (0, std::ios::beg);
char * buffer = new char[length];
file.read(buffer, length);
file.close();
std::string data(buffer);
return data;
}
当我编写压缩数据时,我使用:
void writeFile(std::string filename, std::string data)
{
std::ofstream file;
file.open(filename.c_str(), std::ios::binary);
file << data;
file.close();
}
如果需要,我会展示我用来解压缩的函数,但如果它在没有文件 IO 的情况下工作,我觉得问题是 IO 问题。