我有一個函數,應該通過字符讀取文件字符並輸出到控制檯,直到它到達EOF。該功能可以很好地顯示我想要的所有角色,但它只是繼續前進,並且從不停止。EOF功能故障
下面是功能
void displayAllLines(ifstream &joke)
{
char ch;
joke.clear();
ch = joke.get();
while (ch != EOF)
{
cout << ch;
ch = joke.get();
}
}
文件內容如下
「(空行) 問:什麼做的舌頭說牙齒?」
正如我所說,它顯示的行很好,但循環繼續問號後。
任何想法,爲什麼這可能是?此外,是否需要更多信息來正確回答我的問題?
這只是我從一個文件開始時就教過的習慣。只要確保一開始就沒有標誌。你認爲這是毫無意義的,或者你認爲這對程序可能有害? 編輯::至於你發佈的代碼,它肯定會進一步推進該程序,但不佔空間字符,並顯示一切沒有空間 – Podo
另外,好奇,如果你有任何想法,爲什麼我的代碼*不*工作。 – Podo
我不認爲你應該盲目地調用clear()''。如果有標誌設置,那麼這將是一個原因,只是清除它們將無濟於事。您的代碼不起作用,因爲C++流不像C那樣將EOF讀爲字符。 C++流讀取字符,直到它們碰到EOF。 (他們從來沒有真正返回EOF字符 - 這是一個C的東西。) – Phil