检查输入是否不是整数或数字
Check if input is not integer or number at all cpp
我创建了一个猜谜游戏,你必须猜测从1到100的随机生成的数字。我还设法限制了一个用户,如果他们输入的数字超出了范围,并且需要新的输入。问题是当你不小心输入了字母或符号。然后它进入一个无限循环。我试过了:
while(x<1 || x>100 || cin.fail())//1. tried to test if input failed (AFAIU it checks if input is expected type and if it is not it fails)
while(x<1 || x>100 || x>='a' && x<='z' || x>='A' && <='Z') // 2. tried to test for letters at least
while(x<1 || x>100 x!=(int)x)//3. to test if it is not integer
{ cout<<"Out of range";
cin>>x;
}
对于一个解决方案,您可以尝试使用isdigit
。这将检查输入是否实际上是一个数字。所以你可以做一些类似的事情:
if(!(isdigit(x))){
cout << "That is not an acceptable entry. n";
continue;
}
编辑:我应该说,在研究了这个之后,我意识到isdigit
要工作,条目必须是一个字符。然而,如果您在发现char是int之后将其转换为int,这仍然可以工作。示例:
if(!(isdigit(x))){
cout << "That is not an acceptable entry. n";
continue;
}
else{
int y = x - '0';
}
int y = x - '0'
可能看起来很奇怪;但它是存在的,因为您必须将char转换为int,并且根据ASCII编码,要做到这一点,您需要从所需数字中减去字符"0"。您可以在这里看到:在C和C++中将char转换为int
相关文章:
- 检查输入是否不是整数或数字
- 如何找到大于整数的最小数字
- 在数字之间插入 + 或 - 符号以使其等于整数
- 为什么有时我输入一个整数,程序将第一个输入的数字打印成十进制数?
- 整数区间(或 int 数组)中每个数字的出现次数
- 当我输入字符类型的数字时,为什么我无法获得整数?
- 必须首先打印向量 v1 中最接近整数 x 的数字<int>
- 分隔整数 (C++) 的数字
- 如何优化代码以返回最接近给定整数的数字,但给定列表中不存在?
- C++:从文件中读取字符串和整数,并获得最大数字
- 如何在C ++中替换整数的前两位数字?
- 如何计算整数的十进制数字?
- 如何计算整数链中使用了多少次数字?
- 为什么这个程序接受整数和字母数字输入并打印它们? C++ 中的 std::string 也采用整数值吗?
- R 中的算术在数字上比整数更快。这是怎么回事?
- 我想使用 std::stoi 函数在 cpp 中将字符串转换为整数,因为我想在字符串中找到不同数字的总和(在下级酶中)
- C++以字符串形式打印出来的整数数字
- 使用C - CIN获取几个整数数字,然后将它们放入数组中
- C++整数数字逐行
- 为什么将'0'添加到整数数字可以转换为字符?