如何在等待用户输入int, float或其他类型时拒绝输入char/string



初学者问题!

如何强制用户只输入一个数字(int,float,long..),所以当你等待一个数字时,他不能输入一个字符或字符串:D谢谢

一般来说,输入验证有两种不同的方式:

  1. 在之后验证输入,并显示适当的消息,同时要求用户重新输入有效的输入。
  2. 保持一个状态机(FSM),它知道在特定点期望哪种输入格式。当用户要输入特定字符时,将检查这些字符是否符合当前状态的规则。

第一个解决方案很容易实现,因为您可以检查特定字段的输入操作:

std::istream& is = <reference to any valid input stream>;
double value;
if(!(is >> value)) {
    // Issue error message
}

第二种解决方案需要在输入字符时进行检查,并立即检查是否成为输入的一部分(并在tty上显示),或者不检查。这是不可能在一个简单的,操作系统独立的方式。
虽然有一些可用的技术,但这些技术使您能够根据当前解析器FSM状态限制来自std::cin的字符输入。查看这篇文章,了解如何实现这一目标。

没有任何标准的C/c++库来阻止用户在需要数字的地方输入字符串。

如果您使用的是scanffscanf,您可以检查从函数返回的值,以确保您能够读取预期的数据数。

如果您使用std::cinstd::ifstream,则使用fail()检查操作是否成功。

相关内容

最新更新