【问题标题】:What does while(cin) really mean?while(cin) 的真正含义是什么?
【发布时间】:2019-10-26 13:17:02
【问题描述】:

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

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

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

【问题讨论】:

标签: c++ stream boolean cin conversion-operator


【解决方案1】:

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

explicit operator bool() const;

返回!fail()。

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

其实这个while循环等价于

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

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

【讨论】:

  • 你能不能再详细点?
  • @Lekan 什么不清楚?你不明白这个while循环while(不是std::cin.fail())吗?
  • 是的,我完全没有
  • @Lekan 循环体一直执行,直到输入流出现一些错误情况。
  • 非常感谢,我明白了。我只是在为自己复杂化。
【解决方案2】:

通过一段简单的代码,您可以让您的代码反复运行(类似于无限循环):

#include <iostream>
using namespace std;

int main() {
   while (cin) {
      cout << "HI";
   }
}

【讨论】:

  • 是的,但没有以前的输入。如果在while语句之外还有其他输入怎么办
猜你喜欢
  • 2017-05-06
  • 2012-03-30
  • 2011-10-10
  • 2012-08-03
  • 2012-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多