c ++错误检查fstream open()命令和常规stringstream错误处理

时间:2018-08-19 16:44:46

标签: c++ fstream

我有一个使用ftstream创建打开文件的功能。向其中添加错误检查的最佳方法是什么,因此,如果文件打开失败,则退出程序?

还如何测试写入流是否失败,即outputfile << ss.str();是否失败?

OpenFile() {

 std::ofstream outputfile;
 outputfile.open("test.txt);

 ss << "Testing" << "\n";
 outputfile << ss.str();
}

2 个答案:

答案 0 :(得分:1)

所有流都转换为布尔值,指示它们是否可以使用(即,流转换为true):

std::ofstream outputFile(fileName);
if (!outputFile) {
    std::cout << "failed to open file '" << fileName << "' for writing\n";
}

可悲的是,该州并未包含有关出了什么问题的大量信息。本质上,只有4种不同的说法:

  1. good():未设置其他任何错误标志
  2. eof():流已“触摸”到流的末尾(主要适用于输入流)
  3. bad():流处于根本中断的状态
  4. fail():对流的操作失败,例如,它无法读取某些输入(或流变为bad()

也就是说,没有办法告诉为什么流不好。

答案 1 :(得分:0)

您可以使用outputfile.is_open()来确定文件是否成功打开。要稍后查看流上是否发生错误,可以调用outputfile.fail()。要采用C ++方式,您的!的运算符ofstream返回值fail()。因此,您的条件语句可能如下所示:

if (!outputfile) // Will enter if there was an error.