在 C++ 中检查输入类型

to check type of input in c++

## 检查在 cpp 中输入的数据类型 ##

int main()
{
    int num;
    stack<int> numberStack;
    while(1)
    {
        cin>>num;
        if(isdigit(num))
            numberStack.push(num);
        else
            break;
    }
return(0);
}

如果我将一个变量声明为整数,并输入一个字母,比如 'B',而不是数字,我可以检查用户的这种行为吗?我上面的代码在输入第一个数字时退出并且不等待更多输入。

首先,std::isdigit函数检查字符是否是数字。

其次,通过使用输入运算符>>,您将确保输入的是一个数字,否则将在std::cin 对象中设置一个state flag。因此,例如

while (std::cin >> num)
    numberStack.push(num);

如果出现错误、文件末尾或您输入的内容无效,则循环将结束 int

使用 cin.fail() 检查错误并清理输入缓冲区。

int num;
while (1) {
    cin >> num;
    if (cin.fail()) {
        cin.clear();
        cin.sync();
        cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
        continue;
    }
    if (num == -1) {
        break;
    }
    numberStack.push(num);
}   

首先将您的输入作为字符串

使用 isdigit() 等内置库将其分类为整数

否则如果它包含'.'那么它是一个浮点数

否则,如果它是一个字母数字,它就是一个字符串,就是这样

代码如下,

#include<iostream>
#include<string.h>
using namespace std;

int isint(char a[])
{
    int len=strlen(a);
    int minus=0;
    int dsum=0;
    for(int i=0;i<len;i++)
    {
        if(isdigit(a[i])!=0)
            dsum++;
        else if(a[i]=='-')
            minus++;        
    }
    if(dsum+minus==len)
        return 1;
    else 
        return 0;
}
int isfloat(char a[])
{
    int len=strlen(a);
    int dsum=0;
    int dot=0;
    int minus=0;
    for(int i=0;i<len;i++)
    {
        if(isdigit(a[i])!=0)
        {
            dsum++;
        }
        else if(a[i]=='.')
        {
            dot++;
        }
        else if(a[i]=='-')
        {
            minus++;
        }       
    }
    if(dsum+dot+minus==len)
        return 1;
    else
        return 0;
}
int main()
{
    char a[100];
    cin>>a; 
    
    if(isint(a)==1)
    {
        cout<<"This input is of type Integer";
    }
    else if(isfloat(a)==1)
    {
        cout<<"This input is of type Float";
    }
    else
    {
        cout<<"This input is of type String";
    }
    
}