istream如何评估为false
How can an istream evaluate to false?
在下面的代码中,我们重复调用in.get(c)
,每次都返回一个isteam&
。在while语句中,isteam&
的实例如何计算为false?
我检查了in.get
没有返回null引用,所以我不确定它怎么会被评估为false。
istream &to_std_out(istream &in) {
char c;
while (in.get(c)) {
cout << c;
}
in.clear();
return in;
}
int main() {
istringstream str("A sailor went to see, see, see.");
to_std_out(str);
}
流具有到void*
的转换运算符或到bool
的explicit
转换运算符。如果状态位std::ios_base::badbit
或std:: ios_base::failbit
中的至少一个被设置,则流转换为false
。
相关文章:
- 为什么"do while"循环不断退出,即使条件计算结果为 false?
- std::condition_variable::wait()如何评估给定的谓词
- 伪造事实↔false
- QueryWorkingSet总是返回false
- c++11评估顺序(未定义的行为)
- 如何区分地图中的 0 和 false?
- 模板参数列表中的 false 在模板初始化期间计算为什么?
- Arduino-C++ bool 不会从 false 变为 true
- 如何使用"equal to"以外的评估编写开关语句
- 嵌套 if 中没有返回评估
- 当返回类型声明为 ListNode 时,我们是否可以返回 false<T>*
- 懒惰的参数评估try_emplace?
- 在实践中,在运行时为零的乘法中是否有任何"lazy"评估
- 如何改进一堆在已知值范围内评估变量的 else-if 条件?
- C++17:使用 std::optional 来评估枚举是否包含值
- CNTK:->转发或 ->评估某些电脑上的崩溃,而不是其他电脑上的崩溃
- ConstexPR :GCC比Clang更努力地评估ConstexPR
- C if(false)条件评估
- `如果constexpr(false)`始终评估为true
- istream如何评估为false