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

How to check if number of inputs required is correct or not

本文关键字:输入 是否 何检查 检查      更新时间:2023-10-16

我遇到了一个简单的问题,由于某种原因,我自己无法弄清楚。我正在尝试让用户一次输入 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 之类的笔记本电脑。有什么可以做的来提高它的效率或使用更少的代码吗?谢谢。

现在,你可以做到这一点,从用户那里获取输入作为string,然后解析该string,以查看用户输入了多少个数字。我使用getline从用户那里读取带有空格的string,并且稍后使用stringstream对该字符串进行标记。

在这里,isNumber是一个辅助函数,用于检查给定的string是否是一个数字,getNumber是另一个返回该数字的函数。这两个函数都是使用 stdlib.hstrtol实现的。

我建议您将输入存储在int数组中,以便以后可以访问它们,从而将int nums;声明为 int nums[4];

这是代码:

#include<iostream>
#include<sstream>
#include<stdlib.h>
using namespace std;
bool isNumber(string s)
{
    char* p;
    strtol(s.c_str(), &p, 10);
    return *p == 0;
}
int getNumber(string s)
{
    char* p;
    return strtol(s.c_str(), &p, 10);
}
void askUser()
{
 string strInput;
 int nums[4];
 int cnt;
 do
 {
  cnt = 0;
  cout << "Input 4 values: ";
  getline(cin, strInput, 'n');
  stringstream ss(strInput);
  string s;
  while (getline(ss, s, ' '))
  {
   if(isNumber(s))
   {
    if(cnt < 4)
    {
     nums[cnt] = getNumber(s);
    }
    cnt++;
   }
  }
  if(cnt!=4)
  {
   cout<<"Invalid number of inputs!n";
  }
 }
 while(cnt!=4);
 int i;
 cout<<"The 4 numbers input by the user are: ";
 for(i = 0; i < 4; i++)
 {
  cout<<nums[i]<<" ";
 }
 cout<<endl;
}

注意:输入必须给出为:

用户输入的值一个接一个,只用一个空格分隔。

您可以执行以下操作来检查恰好 4 个输入。

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