我有一个使用ftstream
创建打开文件的功能。向其中添加错误检查的最佳方法是什么,因此,如果文件打开失败,则退出程序?
还如何测试写入流是否失败,即outputfile << ss.str();
是否失败?
OpenFile() {
std::ofstream outputfile;
outputfile.open("test.txt);
ss << "Testing" << "\n";
outputfile << ss.str();
}
答案 0 :(得分:1)
所有流都转换为布尔值,指示它们是否可以使用(即,流转换为true
):
std::ofstream outputFile(fileName);
if (!outputFile) {
std::cout << "failed to open file '" << fileName << "' for writing\n";
}
可悲的是,该州并未包含有关出了什么问题的大量信息。本质上,只有4种不同的说法:
good()
:未设置其他任何错误标志eof()
:流已“触摸”到流的末尾(主要适用于输入流)bad()
:流处于根本中断的状态fail()
:对流的操作失败,例如,它无法读取某些输入(或流变为bad()
)也就是说,没有办法告诉为什么流不好。
答案 1 :(得分:0)
您可以使用outputfile.is_open()
来确定文件是否成功打开。要稍后查看流上是否发生错误,可以调用outputfile.fail()
。要采用C ++方式,您的!
的运算符ofstream
返回值fail()
。因此,您的条件语句可能如下所示:
if (!outputfile) // Will enter if there was an error.