是否可以在C ++中禁用密钥?

时间:2013-11-02 02:56:51

标签: c++ user-input

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

2 个答案:

答案 0 :(得分: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更改为double,这仍然完美无缺。如果您要“关闭密钥”,则必须决定是否允许使用-(负号)或.(十进制)等密钥。

答案 1 :(得分:0)

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

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

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