繁体   English   中英

Cin:等待 <ENTER> 。 两次继续cin.ignore不起作用

[英]Cin: wait for <ENTER>. Two continues cin.ignore do not work

这是代码:

cout << "Press <ENTER> when you are ready to procceed..." << endl;
cin.ignore(std::numeric_limits<streamsize>::max(),'\n');
cin.ignore(std::numeric_limits<streamsize>::max());
cin.clear();
...
cout << "Insert " << nominal << " rubbles into money acceptor and press <ENTER>" << endl;
cin.ignore(std::numeric_limits<streamsize>::max(),'\n');
cin.ignore(std::numeric_limits<streamsize>::max());
cin.clear();

第一次等待,但第二次等待,则没有任何暂停就将其正确抛出。

我试图只使用cin.ignore(std :: numeric_limits :: max(),'\\ n'); 或cin.get()或cin.ignore()或getchar()。 什么都没有。

我什至试图要求用户输入数字:

{cout << "eof: " << cin.eof(); int num; cin >> num; cout << "eof: " << cin.eof(); }

这也不第二次起作用! 在第二个调用时,它从cin读取为“ 32767”。 并输出:

eof: 0
eof: 1

对我来说,目前还不清楚您要做什么,或者为什么。 但是,我编写了这个简单的测试应用程序,对我来说很好用:

#include <iostream>
#include <limits>

int main()
{
    std::cout << "Press enter to start\n";
    std::cin.ignore(std::numeric_limits<std::streamsize>::max(),'\n');
    std::cout << "Press enter again to begin data entry\n";
    std::cin.ignore(std::numeric_limits<std::streamsize>::max(),'\n');

    int i, j;

    std::cout << "Enter a value for i\n";
    std::cin >> i;
    // skip any trailing characters after the number the user entered
    std::cin.ignore(std::numeric_limits<std::streamsize>::max(),'\n');
    std::cout << "Enter a value for j\n";
    std::cin >> j;
    // skip any trailing characters after the number the user entered
    std::cin.ignore(std::numeric_limits<std::streamsize>::max(),'\n');

    std::cout << "i was " << i << ", j was " << j << "\n";

    std::cout << "Press enter to continue\n";
    std::cin.ignore(std::numeric_limits<std::streamsize>::max(),'\n');
    std::cout << "Press enter again to exit\n";
    std::cin.ignore(std::numeric_limits<std::streamsize>::max(),'\n');

    return 0;
}

留在cin.ignore(std::numeric_limits<streamsize>::max()); 您代码中的行迫使我按Enter键(触发“忽略,直到\\n代码”),然后按Control-D发送EOF触发第二个ignore调用。我无法复制您的“它一直正确进行没有任何暂停”的状态。

此代码在GCC 4.7.2和VS2013 Express下正确构建和运行。

尝试:

cin.sync()

也许会起作用...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM