检查int数据类型所采用的输入是否有效

时间:2013-01-07 18:15:42

标签: c++ validation

我有一个名为i的整数变量。

cin阅读:

cin >> i;

如何确认用户输入是有效整数,而不仅仅是任何字符?

1 个答案:

答案 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 */
}