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

cin读取时:

cin >> i;


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

最佳答案

您可以检查最后(一组)输入是否成功

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

关于c++ - 检查int数据类型接受的输入是否有效,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14201637/

10-11 23:04
查看更多