2012-03-31 48 views
1

我有一個問題,能夠處理運行時錯誤,其中用戶輸入的數據不同於預期的數據。例如,一個整數是預期的,但(可能)用戶輸入一個字符串。在我的控制檯程序中,發生這種情況時,我只是在屏幕上打印了大量垃圾,它進入了無限循環。我該如何處理這個問題,以便在發生這種情況時顯示一條錯誤消息,而不是整個程序都會出現垃圾?如何在C++中捕獲運行時錯誤?

int x = 0; 
cout << "\n\nEnter a number(1-9): "; 
cin >> x; 
if(x<1 || x>9) 
{ 
    cout<<"\nThe place you entered is invalid. Please enter the correct place number"; 
}else{ 
    cout<<"Correct"; 
} 

如果我進入上述大於2^31(我知道其爲int數據類型的最大值)或它進入一個無限循環char值的數字。我怎樣才能搭上解決這個problme

+0

這是一個重複的:http://stackoverflow.com/questions/545907/what-is-the-best-way-to-do-input-validation-in-c-with-cin – 2012-03-31 18:33:49

回答

2

cin是一個有點怪異,如果你嘗試讀取用戶數據和類型錯誤(例如,您輸入時int預計字符串)或值非法(例如,它太大),cin進入「失敗狀態」,並從此點向前拒絕讀取用戶的任何值,直到您明確解決問題。正確地從cin中讀取數據使得這種情況不會發生有點棘手,但可以通過編寫一些好的幫助程序並在稍後的程序中調用它們來簡化。

對於一個方法用於正確地從cin讀取數據的描述,你可能想看看these course notes from Stanford's CS106L course,描述瞭如何用C流工作++以及如何正確地讀寫數據。

希望這會有所幫助!