首先看看我的代码:
#include <iostream>
#include <ctype.h>
using namespace std;
int main()
{
int a,b;
cout << "Enter two digits" << endl;
cin >> a >> b;
if (isdigit(a))
if (isdigit(b))
cout << a+b << endl;
else
cout << "Invalid Digit";
return 0;
}
因此我们输入的内容只输出空格。 如果用户点击非数字或任何Alpha,我想要打印 程序应显示无效字符串或如果用户点击任何数字,它必须显示两位数的总和
答案 0 :(得分:3)
由于您正在读取int
变量,因此您输入的任何内容都必须是整数,否则输入操作符将失败。如果你想阅读字符并检查它们是否是数字,你应该读入char
变量,然后你需要在操作之前将它们转换为正确的整数值。
尝试类似:
inline int to_int(const char ch)
{
return ch - '0';
}
// ...
char a, b;
if (std::cin >> a >> b)
{
if (std::isdigit(a) && std::isdigit(b))
std::cout << to_int(a) + to_int(b) << '\n';
else
std::cout << "One is not a digit\n";
}
else
std::cout << "Error in input\n";
如果您只想输入两个通用整数值,那么您已经在正确的轨道上,您只需要确保输入正常:
int a, b;
if (std::cin >> a >> b)
std::cout << a + b << '\n';
else
std::cout << "Error in input (most likely not integers in input)\n";
答案 1 :(得分:1)
你在做什么根本不是你想要做的。
如果传入的值是数字,则 isdigit
返回true。如果输入被解释为字符是数字,则为真。这是你想要的,因为如果我们假设传统的欧洲语言和ASCII字符编码,如果isdigit
或a
中的值在48范围内,则b
将为真。 57。
我认为,您要做的是检查a
和b
是否为有效整数值。在这种情况下:
if (cin >> a >> b)
{
cout << a + b << endl;
}
else
{
cout << "Invalid digit" << endl;
}
是正确的做法。