2012-09-26 80 views
0

我在想,我怎么会能够比较这是为了保持整数值变量,来时候,它传递一个char值区分: 例如:如何数字和字母输入

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

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

+1

检查输入操作的结果,看看它是否成功。 – chris

+3

这听起来像是你的问题真的是:“如果我做'int i; cin >> i'会发生什么事?'和某人不是整数的东西? –

+0

看看ctype:http://www.cplusplus.com/reference/std/locale/ctype/is/ – Annabelle

回答

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(); 
} 
+0

所以,如果我想让我成为一个整数的输入,我可以这样做:if(i = = true )执行命令else做别的 – Josh

+0

@Josh:什么?不,我告诉你该怎么做。我的例子中有些东西你不明白吗? –

+0

对不起,恩,谢谢 – Josh

2

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

char i; 
cin >> i; 

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