0

我想知道,我如何能够将应该保存整数值的变量与传递 char 值的时间进行比较:例如:

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

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

4

2 回答 2

2

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

char i;
cin >> i;

if(isdigit(i))
{
 // if integer
}
else if(isalpha(i))
{
 //if character
}
于 2012-09-26T17:07:29.903 回答
1

将输入转换为字符串,然后尝试将其转换为整数(这里有无数的选项,boost::lexical_cast, std::istringstream, std::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();
}
于 2012-09-26T16:49:39.293 回答