我使用zlib库从字符串压缩数据,并且也以字符串形式获取压缩数据。我使用fstream加载和卸载压缩数据。问题是,有时会发生这样的情况:将一行写入文件时,该行变得大了一个字节,而我不明白为什么会这样。我检查了带有压缩数据的行,它的大小正确,并且可以在程序中从中获取解压缩的数据而无需写入文件。因为在文件中结果多出一个字符,所以我无法再解压缩该数据。从文件中读取这样的行时,相应地,文本编辑器中显示的行数也要多一个字符。
有“ Sel”说的字符串大小是82。
这是我的函数的示例,该函数将压缩的字符串放入文件中:
std::fstream file(filename, std::ios::out, std::ios::binary);
if (!file.is_open()) {
std::cout << "Unable to open file: " << filename << std::endl;
return;
}
std::stringstream someData;
...puts data in "someData"...
std::string compressedData = Compress_String(someData.str());
std::cout << "Comp string: " << compressedData << std::endl;
std::cout << "Comp size: " << compressedData.size() << std::endl;
file << compressedData;
file.close();
答案 0 :(得分:2)
令我惊讶的是,以下几行甚至可以编译。
/^[A-Z0-9- ]+$/
您的编译器必须支持非标准的构造函数。您需要的是
std::fstream file(filename, std::ios::out, std::ios::binary);