我是第二個OOP課程的編程學生,我的第一堂課是用C#教的,而這堂課是用C++教的。爲了讓我們的C++變得更加潮溼,我們的教授要求我們用File I/O編寫一個相當大的程序。問題是,我的程序中有一小部分不起作用,至少不適合我。該項目要求我們編寫一個循環來測試文件是否可以成功打開,並且我寫的循環似乎沒有工作。C++中的簡單文件I/O - 永不退出此循環?
我沒有收到任何編譯器錯誤,但是當我輸入文件的路徑時,無論是相對還是絕對,它都表示它是無效的。我有一種感覺,它與我的do-while
循環中的條件有關,但我無法確定它的位置。
我並不是說要把我的作業帶到SO上,但是我一直在摸我的腦袋兩個多小時,而我似乎無法弄清楚這一點。
你介意幫我修理我的循環嗎?也許可以解釋我做錯了什麼?我想學習。
謝謝!
代碼:
Rainfall rData;
ifstream actualReader;
ifstream averageReader;
string aRDataLoc;
char response = 'a';
const int KILL_VALUE = 1;
double actualRainfallD;
double actualRainfallPassedArray[ARRAY_CAPACITY];
double averageRainfallPassedArray[ARRAY_CAPACITY];
int i = 0;
do
{
actualReader.clear();
cout << "\nPlease enter in the path to the file containing the actual rainfall data." << endl;
cout << "Path to file: ";
cin >> aRDataLoc;
actualReader.open(aRDataLoc.c_str());
if (!actualReader.is_open())
{
cout << "Invalid file path! Would you like to enter in a new file path?(y/n): ";
cin >> response;
if (response == 'n') { exit(KILL_VALUE); }
}
}while (!actualReader.is_open() && response == 'y');
如果我們看不到所聲明的變量,這無能爲力。 – Hogan 2010-02-03 04:06:16
好的,我會補充一點。謝謝。 – Alex 2010-02-03 04:06:38
它對我來說工作得很好。如果我輸入一個不存在的文件名,它會提示是否繼續。如果我輸入一個現有的文件名,它將退出。這不是你想要的嗎? – codaddict 2010-02-03 04:11:40