为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C++
白猪掌柜的 2018-10-29 09:09:59
下面是我的代码: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反而可以直接终止,有哪位大牛能说明一下为什么会这样?
查看完整描述

2 回答

?
慕标琳琳

TA贡献1830条经验 获得超9个赞

下面是我的代码:
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反而可以直接终止,有哪位大牛能说明一下为什么会这样?


查看完整回答
反对 回复 2018-11-03
?
慕妹3242003

TA贡献1824条经验 获得超6个赞

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;


查看完整回答
反对 回复 2018-11-03
  • 2 回答
  • 0 关注
  • 607 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信