私は非常に単純なコードを持っています。その機能は、プログラムがデータを読み取るファイルの名前を入力することです。入力ミスによりファイルが正しくない可能性があるため、以前の名前が無効な場合、コンソールは引き続きユーザーに名前を入力するように求めます。
問題は、最初の do-while ループは問題なく動作しますが、最初のループで最初にファイルの名前が正しく入力されていない場合、プログラムは 2 番目の 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;
}