我有一个非常简单的代码,它的功能是输入程序将从中读取数据的文件的名称。由于输入错误可能导致文件不正确,如果以前的名称无效,控制台将继续要求用户输入名称。
问题是,虽然第一个 do-while 循环工作正常,但如果在第一个循环中第一次没有正确输入文件名,程序将跳过第二个 while 循环。但是,如果正确输入了文件名,则一切正常。
我想知道为什么程序会这样。
感谢您的帮助和时间!
#include<iostream>
#include<fstream>
using namespace std;
int main() {
string context;
int step=0,i=0;
ifstream fin;
do {
string filename;
cout << endl << "please type in the name of input file" << endl;
cin >> filename;
string filepath = "files/" + filename;
cout << filepath << endl;
fin.open( filepath.c_str() );
} while( !fin.is_open() );
while (getline(fin, context)){
cout << context << endl;
cout << "hello" << endl;
}
fin.close();
return 0;
}