c++ - while(cin) 的真正含义是什么?
问题描述
我知道 while(cin) 意味着在 cin 上的所有先前操作都成功时,继续循环。但这究竟意味着什么?
这是否意味着“在我输入了我想要继续循环的所有值之后”或“在完成继续循环之前的输入之后”还是什么?我很困惑。
如果在 while(cin) 之前没有输入,那么会发生什么?
解决方案
该类std::istream
继承了std::basic_ios
包含转换运算符的类
explicit operator bool() const;
返回!fail()
。
在 while 语句的上下文中,std::cin
使用 this 运算符将类型的对象转换为 bool 类型的对象。
实际上这个while循环等价于
while ( not std::cin.fail() )
也就是说,循环将执行其迭代,直到遇到一些错误或流结束。
推荐阅读
- javascript - React-Native:获取 props.children 的尺寸
- javascript - AJAX加载数据时使用summer note插件显示动态内容下拉
- excel - 创建具有后期绑定的对象会导致 ActiveX 运行时错误 429,具体取决于文件夹位置
- c# - 谁能告诉我 SoapDocumentMethodAttribute 是做什么的?
- bash - 如何递归地用变量替换configure.ac中bash变量中的路径?
- python - Elegant way to remove elements from list item in data frame if not contained in another list
- java - Ant 未能创建任务或键入 apt
- c# - C# HRESULT 0x800AC472 使用 Excel 互操作创建新工作簿时
- python - 如何在 A* 算法中最有效地返回路径
- php - 如何在 php 中为 google-photos-api 按媒体类型过滤结果?