我无法处理用户输入的数据与预期不同的运行时错误。例如,预期是一个整数,但(可能)用户输入了一个字符串。在我的控制台程序中,当发生这种情况时,我的屏幕上只会打印出一大堆垃圾信息,它会进入无限循环。我该如何解决这个问题,以便在发生这种情况时显示错误消息,而不是整个程序都变成垃圾?
int x = 0;
cout << "\n\nEnter a number(1-9): ";
cin >> x;
if(x<1 || x>9)
{
cout<<"\nThe place you entered is invalid. Please enter the correct place number";
}else{
cout<<"Correct";
}
如果我输入大于 2^31 的数字(我知道它是 int 数据类型的最大值)或 char 值,它将进入无限循环。我怎样才能解决这个问题
最佳答案
cin
有点奇怪,因为如果您尝试从用户那里读取数据并且类型错误(例如,当 int
是预期的)或值是非法的(例如,它太大),cin
进入“失败状态”并且从那时起将拒绝读取用户的任何值,直到您明确解决问题.正确地从 cin
中读取数据以防止这种情况发生有点棘手,但可以通过编写一些不错的辅助例程并在以后的程序中调用它们来简化。
有关从 cin
正确读取数据的一种方法的说明,您可能需要查看 these course notes from Stanford's CS106L course 描述流在 C++ 中的工作方式以及如何正确读取和写入数据。
希望这对您有所帮助!
关于c++ - 如何在 C++ 中捕获运行时错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9958460/