0
所以我的主代碼是一個菜單。ifstream在選擇菜單選項後不會打開文件
BankAccount BA;
ifstream fin;
int UserAction = -1;
while (UserAction != 0) {
cout << "menu here";
cin >> UserAction;
if (UserAction == 1)
BA.getInstance(BA); //Input by keyboard. Works fine.
if (UserAction == 2)
BA.getInstance(BA, fin); //Input by file.
}
如果我選擇選項#2,將執行此代碼:
void BankAccount::getInstance(BankAccount &BA, ifstream &fin) {
string actN, fname, lname, InputFileName;
double bal;
fin.sync();
cout << "Please enter input file path: ";
getline(cin, InputFileName);
if (fin.fail())
cout << "failed";
else {
fin.open(InputFileName.c_str());
BA.getInstance(BA, fin);
}
fin >> actN;
fin >> lname;
fin >> fname;
fin >> bal;
BA = BankAccount(actN, lname, fname, bal);
}
輸入文件路徑後,並按下Enter鍵,它會說失敗,踢我的菜單。如果我把cin.sync();其中fin.sync是,它只會讓我循環進入文件路徑。請注意,它在菜單外工作。我將如何修復它,以便正確打開文件路徑而不會出現問題,以便它可以處理這些信息?
omg之後使用
fin.fail()
。我沒有意識到我打開之前檢查過。此外,我不得不扔了一個cin.clear和cin,無視它的工作。非常感謝。請問爲什麼你建議做一段時間而不是一段時間?我只是一名學生,所以我仍然在學習可能是最好的選擇。目前,我只是先輸入我知道的內容,如果不起作用,請修復。 – AznChris一個while循環在開始執行一個循環之前檢查一個條件,但是在這裏你需要一個人做一些事情,然後檢查這個值是否是特定的。做一些事情,而一個價值觀是真的,而一個價值觀是真的做一些事情是完全不同的,希望這可以解決這個問題,我也是一個學生,只是它的做法使得完美的兄弟:D –