在c+中,有没有办法将此格式的输入限制为整数/双精度+; 我试图用C++做一个简单的计算器。在我的第一个版本中,我有一个基于菜单的系统,我一个接一个地要求输入,所以很容易验证integer。然而,我意识到我可以让用户以你在真正的计算器上输入的格式输入他们的问题 double first; char choice; double second; cin >> first >> choice >> second;

在c+中,有没有办法将此格式的输入限制为整数/双精度+; 我试图用C++做一个简单的计算器。在我的第一个版本中,我有一个基于菜单的系统,我一个接一个地要求输入,所以很容易验证integer。然而,我意识到我可以让用户以你在真正的计算器上输入的格式输入他们的问题 double first; char choice; double second; cin >> first >> choice >> second;,c++,input,int,calculator,C++,Input,Int,Calculator,然而,现在我被困在如何检查上,因为我所看到的大多数解决方案都遵循这种格式,我不知道如何实现这种格式,因为我的cin接收3条数据 int x; cin >> x; if (!cin) { // not a number } 您不能限制用户在终端上键入的内容。您可以做的最好的事情是检测输入不合适,然后再次请求输入 while ( !(cin >> first) ) { cout << "Please an enter a floating po

然而,现在我被困在如何检查上,因为我所看到的大多数解决方案都遵循这种格式,我不知道如何实现这种格式,因为我的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');
}
while(!(cin>>第一个))
{

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

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

cout来自
scanf()
函数为您提供了对接受何种输入的更精细的控制。另一个选项是以
std::string
char
缓冲区的形式读入一行输入,然后解析该行以查看其是否为有效输入。

scanf
中的
函数为您提供了对接受何种输入的更精细的控制。另一种选择是将一行输入作为
std::string
char
缓冲区读入,然后解析该行以查看其是否为有效输入。

您仍然可以
cin
一次读入一项,即使user在一行中输入所有项目。@Galik在合并@R Sahu的解决方案时如何执行此操作?即使用户在一行中输入所有项目,您仍然可以
cin
一次输入一个项目。@Galik在合并@R Sahu的解决方案时如何执行此操作?