我知道while(cin(的意思是,虽然之前对cin的所有操作都成功了,但继续循环。但这到底意味着什么?
它的意思是"在我输入了所有我想继续循环的值之后"还是"在完成了继续循环之前的输入之后"?我很困惑。
如果之前没有输入(cin(,那么会发生什么?
类std::istream
继承了包含转换运算符的类std::basic_ios
explicit operator bool() const;
返回CCD_ 3。
在while语句的上下文中,使用此运算符将类型为std::cin
的对象转换为类型为bool的对象。
事实上,这个while循环相当于
while ( not std::cin.fail() )
也就是说,循环将执行其迭代,直到遇到一些错误或流的末尾。
通过一段简单的代码,您可以让代码一遍又一遍地运行(类似于无限循环(:
#include <iostream>
using namespace std;
int main() {
while (cin) {
cout << "HI";
}
}