检查文件是否可以打开时数据文件处理出错 - 为什么会出现?

时间:2014-02-03 16:41:22

标签: c++ file-handling

在尝试使用数据文件处理分别从文件中读取和写入类类型对象时,我的书显示了以下代码:?

  fstream filin;
    filin.open("Stu.dat", ios::in | ios::out);  
    if(!filin)
         {cout<< "Cannot open file!!!!!!!!!!!!!!!!!";
          getch(); return 0;
         }
     else { //DO SOMETHING}

但是,这始终显示错误并显示“无法打开文件”

fstream filin;
if(!filin)
     {cout<< "Cannot open file!!!!!!!!!!!!!!!!!";
      getch(); return 0;
     }
 filin.open("Stu.dat", ios::in | ios::out); //Written After the if clause

知道为什么会这样吗?而且,我的书是错的还是从编译器到编译器各不相同?

1 个答案:

答案 0 :(得分:2)

运算符!被重载以说明流是否与文件相关联。如果在尝试打开文件之前检查它是否与文件相关联,它将始终说它不是 - 这是完全正确的。

在检查流的有效性之前调用open(或使用重载的构造函数)。你的书的代码顺序是绝对正确的,这在编译器和编译器之间并不相同。