2013-11-02 76 views
-3

我只是想知道是否可以禁用键(如字母和其他字符),以便用户不能将它们输入到整数并导致错误。如果这是不可能的(或推荐),你可以让我知道如何处理错误?是否可以在C++中禁用键?

+2

你为什么不处理这些错误?在你目前的情况下,简单的回答可能看起来像“嗨,如果我只是禁用这些键,他们不能给不正确的输入,所以我不会有错误!”但是如果你继续编程,有一段时间你必须允许所有的键,但是不正确的输入仍然会来。 – nhgrif

+0

对不起,如果这不是一个好问题。我对C++很陌生,所以你介意让我知道如何做到这一点? – user2840892

+1

如果你编辑你的问题,当你要求用户输入一个整数时,要问如何处理输入错误,我会发布一个答案。 – nhgrif

回答

0

你想在这里,绝对不是禁用键盘上的某些键。但是,一旦按下键并发送了字符,就可以对其进行比较。

然后,你真的应该测试最终的输入,以确保用户没有找到一种方法来发送一个非整数值:例如,你可以,如果它失败的特定测试删除最后输入。

+0

这只是一个简单的部分,更棘手的是将它与其他的流机器集成在一起。顺便说一下,通过const引用传递单个字符没有意义。 –

+0

你说得对。我不知道它是否需要在控制台或GUI应用程序中。另一个答案可能更容易实施和维护。对于const引用,对我来说,确保没有任何东西可以改变函数内部的参数,这只是一种安全的方式。 –

+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,这仍然可以很好地工作。如果您要“关闭钥匙”,那么您必须决定是否允许使用-(负号)或.(十进制)之类的钥匙。

+0

谢谢,但你怎么能限制小数? – user2840892

+0

将'x'改为'float'或'double'应该仍然可以使用。 – nhgrif

相关问题