有没有办法在c ++中以这种格式将输入限制为整数/双精度

时间:2016-09-12 19:41:26

标签: c++ input int calculator

我想用c ++制作一个简单的计算器。在我的第一个版本中,我有基于菜单的系统,我一个接一个地请求输入,因此很容易验证整数。但是,我意识到我可以让用户以您在真实计算器上输入的格式输入他们的问题。

double first;
char choice;
double second;

cin >> first >> choice >> second;

然而现在我被困在我如何检查,因为我看过的大多数解决方案都遵循这种格式,我不知道如何实现,因为我的cin接收3个数据。

int x;
cin >> x;

if (!cin) 
{
    // not a number
}

2 个答案:

答案 0 :(得分:2)

您无法限制用户在终端上键入的内容。您可以做的最好的事情是检测输入是否合适,并再次询问输入。

while ( !(cin >> first) )
{
   cout << "Please an enter a floating point number: "
   cin.clear();
   cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
}

对其他数字做同样的事情。

答案 1 :(得分:0)

来自scanf()<stdio.h>的{​​{1}}功能可让您更精确地控制您接受的输入类型。另一种选择是将输入行作为<cstdio>std::string缓冲区读入,然后解析该行以查看它是否是有效输入。