以下是代码:
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
答案 0 :(得分:2)
我不清楚你要做什么,或为什么。但是,我写了这个简单的测试应用程序,它对我来说很好用:
#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下正确构建并运行。
答案 1 :(得分:0)
尝试:
cin.sync()
也许它会起作用......