辛:等<ENTER>着。两个继续 cin.忽略不起作用

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

本文关键字:两个 继续 cin 不起作用 lt ENTER gt      更新时间:2023-10-16

代码如下:

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 startn";
    std::cin.ignore(std::numeric_limits<std::streamsize>::max(),'n');
    std::cout << "Press enter again to begin data entryn";
    std::cin.ignore(std::numeric_limits<std::streamsize>::max(),'n');
    int i, j;
    std::cout << "Enter a value for in";
    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 jn";
    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 continuen";
    std::cin.ignore(std::numeric_limits<std::streamsize>::max(),'n');
    std::cout << "Press enter again to exitn";
    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下构建并正确运行。

try:

cin.sync()