1
我需要用戶輸入文件,只要用戶輸入存在的文件,文件將循環。當用戶輸入一個不存在的文件時,程序將中斷。如何創建一個檢查用戶輸入以查看它是否爲現有文件的循環?
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
string currentfile;
int i = 0;
do {
cout << "Please enter a file name \n";
cin >> currentfile;
cout << currentfile << "\n";
ifstream myfile(currentfile);
if (myfile.good())
{
// display thenumber of characters, words, and lines in that file
myfile.close();
}
else {
cout << "break";
break;
}
i++;
} while(true);
// repeat while user enters valid file name
}
當我進入存在,myfile.good()
回報好,然後,如果我嘗試並不真正存在再等等myfile.good()
回報文件的文件。如果我啓動該程序,並且首先嚐試不存在的文件then myfile.good()
返回false。
我不知道爲什麼我輸入一個有效的文件myfile.good()
將繼續返回true。
這主要是我的問題是關於和我不能弄清楚的問題。 – user1082764
很可能,如果您從有效文件開始,然後更改爲無效文件,則該流仍然可以用於I/O。我會考慮一個bug,但是,嘿,C++。 – 2rs2ts
是的,就是這樣。 'good()'只在以下任何一個返回true時返回false:'bad()','fail()'和'eof()'。 'fail()'是'bad()'的超集,如果r/w操作失敗或發生格式錯誤,則返回true - 這將在無效文件中發生,但顯然該標誌不會被重新設置。使用'clear()'重置標誌。 – 2rs2ts