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