我有一个名为i
.
阅读时cin
:
cin >> i;
如何确认用户输入是有效整数,而不仅仅是任何字符?
您可以检查最后一个(一组)输入是否成功
if (cin) { /* still good */ }
或者
if (cin.good()) { /* 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 */
}