-3

我只是想知道是否可以禁用键(例如字母和其他字符),以便用户无法将它们输入整数并导致错误。如果不可能(或推荐),请告诉我如何处理错误?

4

2 回答 2

1
int x;
std::cout << "Enter a number: ";
std::cin >> x;
while(std::cin.fail())
{
    std::cin.clear();
    std::cin.ignore(numeric_limits<streamsize>::max(),'\n');
    std::cout << "Bad entry.  Enter a NUMBER: ";
    std::cin >> x;
}
std::cout << "x = " << x << "\n";

std::system("pause");
return 0;

这将停留在while循环中,直到用户输入一个有效的整数。您可以进行更多检查以确保用户输入的数字在一定范围内,或者添加变量以允许一定数量的猜测等。

当然,您需要编辑提示和内容以根据您的用途对其进行调整,但是您可以创建一个新项目,加载此文件并对其进行测试以查看它是如何工作的。稍微玩一下,现在您知道如何进行一些基本的用户输入处理了。

此外,您可以x将此模板更改为 a double,这仍然可以正常工作。如果要“关闭键”,则必须决定是否应允许使用-(负号)或(十进制)之类的键。.

于 2013-11-02T03:01:38.980 回答
0

您在这里想要的绝对不是禁用键盘上的某些键。但是,一旦按下键并发送字符,您就可以对其进行比较。例如,如果最后一个输入未通过特定测试,您可以删除它:

bool validChar(const char &c) {
    return (c >= '0' && c <= '9');
}

然后,您真的应该测试最终输入以确保用户没有找到发送非整数值的方法。

于 2013-11-02T03:00:53.433 回答