为什么cin对fail的检查总是滞后一位?

下面是我的代码:
int main()
{
using namespace std;

char ch;
int count = 0;

cout << "Enter a sentence : ";
while (ch=cin.get()!=EOF)
    count++;

cout << "The last ch is: " << ch << endl;
cout << "You have entered " << count << " chars." << endl;

return 0;

}
如果输入是“I”+,那么这里的输入总是对EOF没有反应,无法终止循环,再单独输入一个EOF才能终止;如果直接输入EOF反而可以直接终止,有哪位大牛能说明一下为什么会这样?


白猪掌柜的
浏览 608回答 2
2回答

慕标琳琳

下面是我的代码:int main(){using namespace std;char&nbsp;ch; int&nbsp;count&nbsp;=&nbsp;0; cout&nbsp;<<&nbsp;"Enter&nbsp;a&nbsp;sentence&nbsp;:&nbsp;"; while&nbsp;(ch=cin.get()!=EOF) &nbsp;&nbsp;&nbsp;&nbsp;count++; cout&nbsp;<<&nbsp;"The&nbsp;last&nbsp;ch&nbsp;is:&nbsp;"&nbsp;<<&nbsp;ch&nbsp;<<&nbsp;endl; cout&nbsp;<<&nbsp;"You&nbsp;have&nbsp;entered&nbsp;"&nbsp;<<&nbsp;count&nbsp;<<&nbsp;"&nbsp;chars."&nbsp;<<&nbsp;endl; return&nbsp;0;}如果输入是“I”+,那么这里的输入总是对EOF没有反应,无法终止循环,再单独输入一个EOF才能终止;如果直接输入EOF反而可以直接终止,有哪位大牛能说明一下为什么会这样?

慕妹3242003

char ch;int count = 0;cout << "Enter a sentence : ";while (**(ch=cin.get())**!=EOF) 这里要括号。count++;cout << "The last ch is: " << ch << endl;cout << "You have entered " << count << " chars." << endl;return 0;
打开App,查看更多内容
随时随地看视频慕课网APP