所以,我有一些简单的东西......
int userinput = 0;
cout << "Enter a number: ";
cin >> userinput;
while (userinput != 1 && userinput != 2 ) { //etc for menu options
cout << "Invalid entry! Try again! ";
cin >> userinput;
}
只要我输入数字,它就可以正常工作,但是如果我输入了#39;它破坏了我的程序并进入了一个无限循环......根据我对C ++的理解,这没有任何意义。由于我将用户输入键入为int,因此不需要&#39; a&#39;作为a的ASCII值,并且因为我的菜单列表中没有数字而给出无效的输入错误?为什么无限循环,我该如何阻止它?我在Visual Studio 2012中进行编码,如果它有任何区别......
答案 0 :(得分:0)
您需要清除流
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(),'\n');
在cout<<...
之后,#include <limits>
在程序开始之后。
正如@Igor所说,在你读了一个非数字后,cin
无法解析它,循环重复,同样的事情一次又一次地发生。这就是为什么重置流解决了它,它消耗&#34;在溪流中留下未经分析的东西。
答案 1 :(得分:0)
这是因为你有&#34; userinput&#34;作为整数值,&#39; a&#39;不是一个数字。
答案 2 :(得分:0)
如果你真的想将一个角色传递给这个程序,你可以使用cin作为角色,然后将它传递给整数。或者,您可以为整数创建包装类,并重载cin以接受类的字符或整数输入。