初学者问题!
如何强制用户只输入一个数字(int,float,long..),所以当你等待一个数字时,他不能输入一个字符或字符串:D谢谢
一般来说,输入验证有两种不同的方式:
- 在之后验证输入,并显示适当的消息,同时要求用户重新输入有效的输入。
- 保持一个状态机(FSM),它知道在特定点期望哪种输入格式。当用户要输入特定字符时,将检查这些字符是否符合当前状态的规则。
第一个解决方案很容易实现,因为您可以检查特定字段的输入操作:
std::istream& is = <reference to any valid input stream>;
double value;
if(!(is >> value)) {
// Issue error message
}
第二种解决方案需要在输入字符时进行检查,并立即检查是否成为输入的一部分(并在tty上显示),或者不检查。这是不可能在一个简单的,操作系统独立的方式。
虽然有一些可用的技术,但这些技术使您能够根据当前解析器FSM状态限制来自std::cin
的字符输入。查看这篇文章,了解如何实现这一目标。
没有任何标准的C/c++库来阻止用户在需要数字的地方输入字符串。
如果您使用的是scanf
或fscanf
,您可以检查从函数返回的值,以确保您能够读取预期的数据数。
如果您使用std::cin
或std::ifstream
,则使用fail()
检查操作是否成功。