在尝试使用数据文件处理分别从文件中读取和写入类类型对象时,我的书显示了以下代码:?
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
知道为什么会这样吗?而且,我的书是错的还是从编译器到编译器各不相同?
答案 0 :(得分:2)
运算符!
被重载以说明流是否与文件相关联。如果在尝试打开文件之前检查它是否与文件相关联,它将始终说它不是 - 这是完全正确的。
在检查流的有效性之前调用open
(或使用重载的构造函数)。你的书的代码顺序是绝对正确的,这在编译器和编译器之间并不相同。