用ifstream打开一个不存在文件导致fail.在clear和close之后open一个存在的文件,为何还是fail?
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main()
{
string fn;
cout<<"Enter file name:";
cin>>fn;
ifstream READ(fn.c_str());
if(READ.fail()){
cerr<<"open "<<fn<<" failed.try again\n";
READ.clear();
READ.close();
cout<<"Enter file name:";
cin>>fn;
READ.open(fn.c_str());
if(READ.good()) cout<<"good\n";
else cout<<"unfortunately\n";
}
}
E:\TEMP>test
Enter file name:vc7.txt
E:\TEMP>test
Enter file name:aaaaa
open aaaaa failed.try again
Enter file name:vc7.txt
unfortunately
borland和.net都这样