Making Conditional isdigit()

Making Conditional isdigit()

本文关键字:isdigit Conditional Making      更新时间:2023-10-16

首先看看我的代码:

#‎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,我想打印程序应该显示无效字符串,或者如果用户点击任何数字,它必须显示两位数字的总和

由于您正在读取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 digitn";
}
else
    std::cout << "Error in inputn";

如果你只想输入两个通用的整数值,那么你已经走上了正确的轨道,你只需要确保输入是正确的:

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";

你正在做的根本不是你想做的。

如果传入的值是数字,则isdigit返回true。如果被解释为字符的输入是一个数字,那就是真的。这与您想要的不一样,因为如果我们假设使用传统的欧洲语言和ASCII字符编码,那么如果ab中的值在48..57范围内,则isdigit将为真。

我想,您要做的是检查ab是否是有效的整数值。在这种情况下:

 if (cin >> a >> b)
 {
    cout << a + b << endl;
 }
 else
 {
    cout << "Invalid digit" << endl; 
 }

将是正确的做法。