while 明明符合条件 但不能跳出循环

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这句话就跳不出来。这是为什么?

    ifstream fin;
    fin.open("/users/dd/Desktop/"+name+".txt");
    while(!fin.is_open()) {
……
        ifstream fin("/users/dd/Desktop/"+name+".txt");
……

    }

循环体外的 fin 和循环体内的 fin 是不同的对象,只是重名了而已

温馨提示:答案为网友推荐,仅供参考
相似回答