如何区分数字和字母输入

时间:2012-09-26 16:46:10

标签: c++ integer

我想知道,我怎样才能将一个应该保存整数值的变量与传递char值的次数进行比较: 例如:

int i;
cin >> i;
if(i == integer)
          execute a command;
else (if i == char)
          do something else here;

由于x无法保存字符值,当有人试图在i中输入字符值时,它会失败吗?

2 个答案:

答案 0 :(得分:2)

使用 ctype.h 函数检查变量的类型。 你应该得到这样的东西:

char i;
cin >> i;

if(isdigit(i))
{
 // if integer
}
else if(isalpha(i))
{
 //if character
}

答案 1 :(得分:1)

获取字符串输入,然后尝试将其转换为整数(此处有无数选项,boost::lexical_caststd::istringstreamstd::stoi等等......)如果转换成功,则有一个整数,如果失败,则不是。以下是使用istringstream的示例:

std::string input;
std::cin >> input;
std::istringstream iss(input);
int x;
if (iss >> x)
{
    // success
}
else
{
    // failure
}

如果您不关心输入是不是整数的情况,您只需在输入int时直接检查失败:

int x;
if (cin >> x)
{
    // success
}
else
{
    // get cin out of the error state
    cin.clear();
}