在c++中是否有一种方法可以将这种格式的输入限制为整数/双精度

Is there a way to restrict input to integer/double in this format in c++

本文关键字:输入 格式 双精度 整数 是否 c++ 方法 一种      更新时间:2023-10-16

我正在尝试用c++制作一个简单的计算器。在我的第一个版本中,我有一个基于菜单的系统,我要求输入一个接一个,所以很容易验证整数。然而,我意识到我可以让用户以你在真正的计算器上输入的格式输入他们的问题。

double first;
char choice;
double second;
cin >> first >> choice >> second;

然而现在我被困在我如何检查,因为我所看到的大多数解决方案遵循这种格式,我不知道我如何实现,因为我的cin需要3块数据。

int x;
cin >> x;
if (!cin) 
{
    // not a number
}

不能限制用户在终端上输入的内容。您能做的最好的事情是检测输入不合适,并再次请求输入。

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

对其他数字执行相同操作

来自<stdio.h><cstdio>scanf()函数使您可以更精细地控制您接受的输入类型。另一种选择是读入一行输入作为std::stringchar缓冲区,然后解析该行以查看它是否是有效的输入。