当前位置:  开发笔记 > 编程语言 > 正文

为什么第二个cin.ignore()是必要的?

如何解决《为什么第二个cin.ignore()是必要的?》经验,为你挑选了1个好方法。

我注意到,每当我编写一个使用std::cin它的程序时,如果我希望用户按Enter键结束程序,我必须写std::cin.ignore()两次才能获得所需的行为.例如:

#include 

int main(void)
{
    int val = 0;
    std::cout << "Enter an integer: ";
    std::cin >> val;

    std::cout << "Please press Enter to continue..." << std::endl;

    std::cin.ignore();
    std::cin.ignore();  // Why is this one needed?
}

我也注意到,当我不是cin用于实际输入而是仅用于最后的ignore()呼叫时,我只需要一个.



1> Luc Hermitte..:

Discl:我正在简化实际发生的事情.

第一个用于清除提取操作符(>>)未消耗的内容.第二个等待另一个\n.

在提取后执行std :: getline时完全相同:the_stream::ignore(std::numeric_limits::max(), '\n');在调用std :: getline()之前需要a


啊,我明白了.因此,如果您在第一个提示符处输入的字符是"123 \n",则表示运算符>>()单独留下"\n",第一个ignore()读取它; 然后第二个ignore()等你按一个键然后读取(第二个"\n").+1.
推荐阅读
勤奋的瞌睡猪_715
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有