我正在使用gzstream來寫我的C++程序的輸出。但是,有時生成的文件似乎寫得很糟糕:zcat: output.txt.gz: unexpected end of file
,即使我自己的程序沒有返回錯誤。在C++中,如何在使用gzstream編寫壓縮文件時檢查錯誤?
因此,我想在寫入文件時發現錯誤,這不需要等到程序完成後才能執行zcat並查看上述錯誤。
這裏是我的代碼的相關部分:
ogzstream outStream;
outStream.open ("output.txt.gz");
if (! outStream.is_open()) { cerr << "error while opening" << endl; exit (1); }
for (size_t i = 0; i < vecResults.size(); ++i)
outStream << i << " " << vecResults[i] << endl;
outStream.close();
有什麼方法可以改善呢?在使用<<
寫作之後,我應該檢查任何錯誤位嗎?或關閉後?如果是的話,我該怎麼做?
(FYI這是相當難以複製的錯誤,因爲它發生很少,但常常足以令人反感。)
你打開它在二進制模式? – Dani 2012-08-06 18:33:41
@Dani我打開它,如上面所寫,這是默認的'int open_mode = std :: ios :: in' – tflutre 2012-08-06 18:45:05
當然它會失敗。以二進制模式打開它。 – Dani 2012-08-06 19:45:04