如何检查所需的输入数量是否正确
How to check if number of inputs required is correct or not
我遇到了一个简单的问题,由于某种原因,我自己无法弄清楚。我正在尝试让用户一次输入 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.h
的strtol
实现的。
我建议您将输入存储在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;
}
- 检查输入是否不是整数或数字
- 检查TCHAR数组输入是否为带符号整数C++
- 如何检查输入是否有效?
- 如何检查用户的输入是否有效以及我正在寻找的数字?
- 有没有办法检查用户输入是否是数字?
- 如何知道文本文件中的输入是否是 C++ 中的有效数字
- 如何检查输入是否为字符并显示它是"invalid input",否则它将按原样运行
- 确定用户输入是否为带C++的回文
- isdigit() 和 isalnum() 给出错误,因为输入是一个常量字符并且无法转换。其他可能查看输入是否为数字的方法?
- 检查输入是否为字母数字时的逻辑错误
- 如何在 while 循环C++中检查 int 输入是否为空或用户按 Enter 键
- C++ 检查 cin 的输入是否正确数据
- 如何检查字符串输入是否为有效的双精度
- 检查用户输入是否正确的函数不起作用
- 检查leandit输入是否具有正确的格式QT 5 C
- 确定输入是否为整数C++时出现问题
- 验证用户输入是否有效 [从 'char' 到 'char*' 的转换无效]
- 方法应将 R 值引用作为输入是否有任何正当理由
- 检查输入是否为数字,否则将其视为字符
- 检查用户输入是否按字母顺序排列