2017-03-01 119 views
-1

我想要防止用戶在提示時輸入錯誤的數據類型的可能性。C++:獲取用戶通過cin輸入的數據類型

例如,假設:

int age 
cout << "What is your age?" << endl; 
cin >> age; 

但可以說,在字符串中的用戶類型或一個字符代替,會有反正我抓住它,並重新提示用戶再試一次嗎?像:

if (age != dataType(int) || age !=dataType(float) 
cout << "Invalid entry. Please enter a number and try again."; 

編輯:據我所知,CIN可以在字符或字符串,但我需要檢查,看它是否符合整型,因爲在這個例子中,用戶可以通過它上面輸入他或她的年齡例如「二十三」。

+0

首先讀入一個'std :: string',然後用'std :: istream'來使用這個''std :: istream'',這樣你可以檢查數字提取是否失敗。 –

+0

我想你可能會覺得這很有幫助。 http://stackoverflow.com/questions/12721911/c-how-to-verify-is-the-data-input-is-of-the-correct-datatype#12722150 –

回答

1

你需要自己動手解析一個字符串。對於特定類型(如int),operator>>的過載是爲了您的方便,以及您確實確信輸入將是該類型的情況。當然,你可以檢查它是否失敗,但再一次,如果你沒有閱讀你期望的單一特定類型。

但是,一般情況下,cin與字符(「字符輸入」)一起工作,所以在使用字符序列(又名字符串)的基本級別上工作。

TL; DR:cin轉換成string,然後自己解析字符串的內容以確定輸入數據的實際類型。