我有一个名为i
的整数变量。
从cin
阅读:
cin >> i;
如何确认用户输入是有效整数,而不仅仅是任何字符?
答案 0 :(得分:1)
您可以使用
检查最后一组输入是否成功if (cin) { /* still good */ }
或
if (cin.good()) { /* still good */ }
您也可以一次性获取输入并检查成功:
if (cin >> i) { /* still good */ }
所有这些方法都有一个缺点,那就是不会从cin
删除违规输入,也无法告诉割草。
获取用户输入并验证它的更健壮的方法是首先将一行输入读入字符串,然后从该字符串中提取信息。例如:
string line;
int i;
if (getline(cin, line))
{
stringstream ss(line);
if (ss >> i)
{
/* we have got our int */
}
else
{
/* That was not an integer entered by the user */
}
}
else
{
/* The user did not enter anything */
}