0

我正在使用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();

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

(仅供参考,很难复制该错误,因为它很少发生,但频率足以令人讨厌。)

4

1 回答 1

1

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

或者,您可以使用该exceptions(...)成员请求在发生错误时抛出异常。

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

于 2012-08-06T17:59:53.103 回答