2017-03-01 45 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,然后自己解析字符串的内容以确定输入数据的实际类型。