while(cin)到底是什么意思



我知道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";
}
}

最新更新