我想用我的 C++ 脚本读写压缩文件。为此,我使用 gzstream 库。它适用于这样一个非常简单的示例:
string inFile="/path/inputfile.gz";
igzstream inputfile;
ogzstream outputfile("/path/outputfile.gz");
inputfile.open(inFile.c_str());
// Writing from input file to output file
string line;
while(getline(inputfile, line)) {
outputfile << line << endl;
}
但在我的 C++ 脚本中,事情更加复杂,我的输出文件是在动态向量中创建的。
对于未压缩的文件,这种方式工作得很好:
string inFile="/path/uncompressedInputFile.ext";
ifstream inputfile;
vector <ofstream *> outfiles(1);
string outputfile="/path/uncompressedOutputFile.ext";
outfiles[1] = new ofstream(outputfile.c_str());
inputfile.open(inFile.c_str());
string line;
while(getline(inputfile, line)) {
*outfiles[1] << line << endl;
}
现在使用压缩文件,这种方式会产生损坏的文件:
string inFile="/path/compressedFile.gz";
igzstream inputfile;
vector <ogzstream *> outfiles(1);
string outputfile="/path/compressedOutputFile.gz";
outfiles[1] = new ogzstream(outputfile.c_str());
inputfile.open(inFile.c_str());
string line;
while(getline(inputfile, line)) {
*outfiles[1] << line << endl;
}
我的路径中有一个“compressedOutputFile.gz”,不是空的,但是当尝试解压缩它时,我得到了“意外的文件结尾”,我猜这意味着文件已损坏......它有什么问题?谁能帮帮我吗 ?!:)