嗨,我对C ++很新,但我有一点问题,就是我必须阻止用户在数字部分输入字母。我做了一个有效的尝试,但它的狡猾,因为它将允许用户继续,然后将告诉他们他们有错误,并重新启动应用程序。如何验证它以显示错误消息,告诉他们这不是数字并让他们重新输入数字?
以下是代码:
double Rheight;
do
{
cout << "Enter height of the room. " << endl;
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 4);
cout << "WARNING: If you enter a letter the program will exit." << endl;
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 7);
cin >> Rheight;
}
while (Rheight > 20 || Rheight == 0);
询问您是否需要查看更多代码。
答案 0 :(得分:2)
答案基本上有两个组成部分:
第一部分相当简单:在使用输入之前,输入流处于良好状态后,总是测试。例如:
if (std::cin >> value) {
// use value
}
else {
// deal with the input error
}
如何处理输入错误取决于您的需求。读取文件时,您可能会中止读取整个文件。从标准输入读取时,您可以忽略下一个字符,整行等。大多数情况下,您希望忽略整行。在此之前,您需要将流恢复到良好的状态:
std::cin.clear();
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
第一行清除了流的错误标志,第二行是一个魔术咒语,忽略了必要的字符,直到新行被忽略。
答案 1 :(得分:0)
要检查输入是否有效,您可以使用
if(!(cin >> Rheight))
{
cout << "Please input a valid number!" << endl;
continue;
}