求索探知 2018-03-16 05:28 采纳率: 100%
浏览 675
已采纳

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

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

  1. char ch;
  2. int count = 0;
  3. cout << "Enter a sentence : ";
  4. while (ch=cin.get()!=EOF)
  5. count++;
  6. cout << "The last ch is: " << ch << endl;
  7. cout << "You have entered " << count << " chars." << endl;
  8. return 0;

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

  • 写回答

2条回答 默认 最新

  • Wyt_code 2018-03-16 07:09
    关注

    EOF需要用文件输入才可以终止,要不就用CTRL+C
    例:#include
    #include
    int main()
    {
    using namespace std;
    char ch;
    int count = 0;
    freopen("sample.in", "r", stdin);

    freopen("sample.out", "w", stdout);

    cout << "Enter a sentence : ";
    ch=cin.get();
    while (ch!=EOF)
    count++,ch=cin.get();
    cout << "The last ch is: " << ch << endl;
    cout << "You have entered " << count << " chars." << endl;
    fclose(stdin);

    fclose(stdout);
    return 0;
    }
    按照你程序意思,想要输出最后一个字符
    然而只有读了EOF判断完了才可以输出
    所以"The last ch is:
    后面是空的
    你自己改一下,加一个char类型,就可以实现目的
    (用文件时不要打回车)
    滑稽.opj____________________________________

    展开全部

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)
编辑
预览

报告相同问题?

悬赏问题

  • ¥30 给出MySQL数据库workbench代码
  • ¥15 文本挖掘法衡量保险公司数字化转型
  • ¥15 Direct2D,一个图像如何绘制到不同窗体?
  • ¥15 putimage函数输出了不属于指定路径的图片
  • ¥15 ros2运行代码出现问题
  • ¥15 关于#c++#的问题,请各位专家解答!
  • ¥15 Linux系统虚拟机连不上网络
  • ¥15 Qt控件QCombobox样式设计之后箭头不见了
  • ¥15 8阶光立方求驱动层和应用层代码(原理图已给出)
  • ¥15 如何在不联网的时候使用下面导入的库
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部