如何检查所需的输入数量是否正确

时间:2016-02-24 03:24:12

标签: c++ c++11 for-loop input

我遇到一个简单的问题,由于某些原因我自己无法弄明白。我试图让用户一次输入4个不同的数字。现在我遇到的问题是我想检查他们是否输入了4个数字。因此,如果用户只输入3个数字(比如1,2,3),我想输出一条错误信息并将它们返回到输入4个数字。如果他们输入说5个数字(比如1,2,3,4,5),输出错误信息并返回输入屏幕,则相同。

我知道如何做到这一点,但不再太确定了。我认为这将是:

void askUser()
{
   int nums;
   cin >> nums;
   while (int i = 4)            // have a for loop here to check if it 
   {                            // has 4 numbers inputted
      for (?)                   // this is where I am having a problem
      {
         //output numbers or output error message
         cout << nums << endl;

         else 
          cout << "Wrong amount of input! Please input 4 values" << endl;
          return *back to input screen*
      }
  }

我看到有关堆栈溢出的另一个问题有点类似于此,除了在另一个问题中他们正在处理单词而我不确定如何在不尝试他们正在做的事情的情况下去做。我看到的另一个问题是最接近这个标题为“C ++检查特定输入数量”的问题。谢谢你,希望这是正确的问题。

*编辑* 好的,现在我正在尝试这个:

int input;
int cnt = 0;
cout << "Input 4 values" << endl;
while(cnt < 4)
{
    cin >> input;
    cnt+=1;
    if (input != cnt)
     cout << "Error please input exactly 4 values" << endl;

}
return 0;

这似乎有效,虽然我必须说我正在使用ideone.com测试代码,因为我在笔记本电脑上没有像eclipse或VS这样的东西。有什么可以做的,以提高效率或使用更少的代码?感谢。

2 个答案:

答案 0 :(得分:1)

您可以采取以下措施来检查4个输入。

int cnt = 0;
while(cnt < 4)
{
  cout<<"Type in input :"<<endl;
  cin >> input;
  cnt+=1;
}

答案 1 :(得分:1)

现在,您可以通过将用户的输入作为dtostrf进行操作,然后解析string,以查看用户输入了多少个数字。我已使用getline从用户那里读取带有空格的string,以及稍后使用stringstream对该字符串进行标记。

这里,string是一个辅助函数,用于检查给定的isNumber是否为数字,而string是另一个返回该数字的函数。这两个函数都是使用getNumber的{​​{3}}实现的。

我建议您将输入存储在stdlib.h数组中,以便以后可以访问它们,因此将int声明为int nums;

以下是代码:

int nums[4];

注意:输入必须为:

  

用户一个接一个地输入值,仅用空格分隔。