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

Simple error checking in file output

本文关键字:错误 检查 简单 输出 文件      更新时间:2023-10-16

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

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

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

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