Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/155.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 检查int数据类型获取的输入是否有效_C++_Validation - Fatal编程技术网

C++ 检查int数据类型获取的输入是否有效

C++ 检查int数据类型获取的输入是否有效,c++,validation,C++,Validation,我有一个名为I的整数变量 从cin读取时: cin >> i; 如何确认用户输入是有效的整数,而不仅仅是任何字符?您可以检查最后一组输入是否成功 if (cin) { /* still good */ } 或 您还可以一次获得输入并检查是否成功: if (cin >> i) { /* still good */ } 所有这些方法都有一个缺点,那就是有问题的输入将不会从cin中删除,并且无法告诉mow有多少 获取用户输入并对其进行验证的更可靠的方法是,首先将一行输入读

我有一个名为
I
的整数变量

cin
读取时:

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

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

if (cin) { /* still good */ }

您还可以一次获得输入并检查是否成功:

if (cin >> i) { /* still good */ }
所有这些方法都有一个缺点,那就是有问题的输入将不会从
cin
中删除,并且无法告诉mow有多少

获取用户输入并对其进行验证的更可靠的方法是,首先将一行输入读入字符串,然后从该字符串中提取信息。例如:

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

您可能想看看这个函数,您可以通过
if(cin>>i).
last i checked检查有效输入和流验证。未能正确提取应设置streams failbit,您需要更具体的内容吗?
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 */
}