我想用我的C++腳本讀取和寫入壓縮文件。爲此,我使用gzstream庫。它工作正常,像這樣一個很簡單的例子:用於C++的gzstream lib:創建的損壞文件
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」我路徑,而不是空的,但當試圖解壓縮它時,我得到了「意外的文件結尾」,我猜,這意味着文件已損壞.... 它有什麼問題?誰能幫幫我嗎 ?! :)
爲什麼'[1]'(我們傾向於從0開始索引)? – doctorlove
你是對的,指數通常從0開始,但將[0]代替爲[1]會得到相同的結果:/ – Totoro