文件输出中的简单错误检查

时间:2014-11-23 19:39:35

标签: c++

所以我有一个关于在while循环中使用ofstream的问题。假设我有一个大小为X的数组,我想循环该数组并将项目输出到文件。以下代码是否足以进行错误检查?如果是这样(或不是这样)为什么?

char arr[X];
ofstream fout("out.txt");
for(int i=0;i<X;i++)
{
     while(!(fout<<arr[i]){}
}

1 个答案:

答案 0 :(得分:2)

撰写char时,没有太多可能出错的事情。唯一可能发生的错误是流std::streambuf报告overflow()中的错误。这通过您的测试进行了充分测试。也就是说,成功缓冲字符并不意味着写缓冲区会成功。要测试成功写入,您还需要测试fout.close()是否成功!析构函数中的隐式close()只会吞下任何错误。

但请注意,一旦流进入失败状态,它将停止执行任何有用的操作,直到在流上调用clear()为止。换句话说,如果在写入流时出错,您最终会得到一个无限循环。即使调用clear(),我也不会指望底层流缓冲区会做出任何不同的事情,即我希望它再次失败。也就是说,如果你真的关心这些错误,你需要提出一个比“再试一次”更好的错误处理策略!