在C ++中,如何在使用gzstream编写压缩文件时检查错误?

时间:2012-08-06 15:41:41

标签: c++ compression

我正在使用gzstream来编写C ++程序的输出。但是,有时候生成的文件似乎编写得很糟糕:zcat: output.txt.gz: unexpected end of file,即使我自己的程序没有返回错误。

因此,我想在编写文件时捕获错误,即无需等到程序完成后再执行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();

有什么可以改进的?用<<写完后我应该检查任何错误位吗?或者关闭后?如果是,我该怎么做?

(仅供参考我很难复制错误,因为它很少发生,但经常足以引起讨厌。)

1 个答案:

答案 0 :(得分:1)

假设错误检查在内部正确实施,您应该能够在关闭outStream.good()之后检查exceptions(...)的结果。

或者,您可以使用{{1}}成员请求在出现错误时抛出异常。

编辑:错误位不会自动重置,所以最后检查它们是安全的;如果中间有任何失败,你可以在最后检查。