2012-09-26 115 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 
}