[英]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.