我有一个名为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/