2015-06-01 160 views
-3

##要檢查的cpp輸入的數據的類型##檢查輸入的類型在C++

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

如果我一個變量聲明爲整數,和I輸入的字母,要說「B」,而不是號碼,我可以檢查用戶的這種行爲嗎?上面的代碼在輸入第一個數字時退出,不等待更多輸入。

+0

請不要取笑我的問題。我正在嘗試學習cpp – pencilandpaper

+2

首先閱讀您在代碼中使用的所有構造的文檔。 –

+1

首先你不檢查是否讀取數字成功。使用類似'if(!(cin >> num)){cout <<「讀取失敗次數」;打破;}'。其次['isdigit'](http://www.cplusplus.com/reference/cctype/isdigit/)檢查一個字符,但是你用'cin'讀了一個'int'。你可能希望'num'是一個'char'。 – nwp

回答

2

首先,std::isdigit函數檢查字符是否是數字。

其次,通過使用輸入運算符>>,您將確保輸入是一個數字,否則將在std::cin對象中設置一個state flag。因此,例如,然後

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

循環將結束時,如果有一個錯誤,文件結束,或者你輸入的東西是不是一個有效int

+0

非常感謝 – pencilandpaper

0

使用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); 
}