void load()
{
string name;
char d[4];
cout<<"请输入将载入的方案名:"<<endl;
cin>>name;
ifstream fin;
fin.open("/users/dd/Desktop/"+name+".txt");
while(!fin.is_open()) {
cout<<"方案不存在,请重新输入将载入的方案名:"<<endl;
cin>>name;
fin.clear();//清空文件输入流
fin.close();
ifstream fin("/users/dd/Desktop/"+name+".txt");
cout<<fin.is_open();
// if(fin.is_open()) break;//?????为什么要加这句才跳的出循环
}
cout<<"载入成功!"<<endl;
fin.getline(d, 4);
fin.close();
exit(0);
}
输出(第一次输一个不存在的文件,第二次输一个存在的文件)
------------------------------------------------------------------------------------------------------------------
请输入将载入的方案名:
a
方案不存在,请重新输入将载入的方案名:
q
1方案不存在,请重新输入将载入的方案名:
-------------------------------------------------------------------------------------------------------
1表示fin.is_open();是true,满足跳出循环的条件,但如果没有break这句话就跳不出来。这是为什么?
循环体外的 fin 和循环体内的 fin 是不同的对象,只是重名了而已