我有一个函数,应该通过字符读取文件字符并输出到控制台,直到它到达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