我得到了循环,并且输入int类型的初始提示,但是......使用!(cin>> [variable])检查while循环是什么?我在cplusplus.com上查看了cin以获得解释,但我没有看到它有任何值......看起来它只是检查输入数字的数值,如何检查有效的整数输入?
int number;
.
.
.
cout<<"Please enter a number: ";
while (!(cin >> number))
{
cin.clear();
cin >> badinput;
cout <<"Input " << badinput << " is invalid, please enter a number: ";
}
答案 0 :(得分:1)
operator >>
返回对流的引用,而不是从流中读取的内容。读取的值放在参数引用的内容中,该值必须是左值。
iostream上的!
运算符测试流上的失败标志 - 如果流上出现任何类型的失败,则返回true。对于输入流,如果您尝试读取整数(因为此代码正在执行)并且输入看起来不像整数,则将设置失败标志。
因此,此代码(尝试)将整数读入number
,然后测试失败标志。如果已设置,则清除失败标志,读取badinput
(可能是字符串),打印消息并循环,尝试读取另一个整数。
因此只要格式化失败,它就会循环直到获得整数。如果还有一些其他更持久的失败(例如,如果cin获得EOF或被关闭),它将永远循环。
答案 1 :(得分:-1)
我认为它会检查是否输入了正数。正数将为真,导致!number
为false并跳过循环。如果它不是输入的正数,则它将为false,导致!number
为真并进入循环。