我想防止用户在提示时输入错误的数据类型。
例如,假设:
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可以接受字符或字符串,但我需要检查它是否与int匹配,因为在这个例子中,用户可以通过输入来输入他或她的年龄&#34;二十3&#34;例如。
答案 0 :(得分:1)
您需要通过手动解析字符串来自己完成。 operator>>
对特定类型(如int
)的重载是为了您的方便,以及您绝对确定输入属于该类型的情况。当然,您可以检查它是否失败,但是再一次,因为未能读取您期望的单个特定类型。
但是,一般情况下,cin
适用于字符(&#34;字符输入&#34;),因此在基本级别上使用字符序列(即字符串)。
TL; DR:cin
到string
,然后自己解析字符串的内容以确定输入数据的实际类型。