首页 > 解决方案 > while(cin) 的真正含义是什么?

问题描述

我知道 while(cin) 意味着在 cin 上的所有先前操作都成功时,继续循环。但这究竟意味着什么?

这是否意味着“在我输入了我想要继续循环的所有值之后”或“在完成继续循环之前的输入之后”还是什么?我很困惑。

如果在 while(cin) 之前没有输入,那么会发生什么?

标签: c++streambooleancinconversion-operator

解决方案


该类std::istream继承了std::basic_ios包含转换运算符的类

explicit operator bool() const;

返回!fail()

在 while 语句的上下文中,std::cin使用 this 运算符将类型的对象转换为 bool 类型的对象。

实际上这个while循环等价于

while ( not std::cin.fail() )

也就是说,循环将执行其迭代,直到遇到一些错误或流结束。


推荐阅读