代码之家  ›  专栏  ›  技术社区  ›  tflutre

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

  •  0
  • tflutre  · 技术社区  · 14 年前

    我正在使用 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 回复  |  直到 14 年前
        1
  •  1
  •   DanielKO    14 年前

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

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

    编辑:错误位不会自动重置,所以只在最后检查它们是安全的;如果中间有什么问题,你可以在最后检查。

    推荐文章