#include <iostream>
int main()
{
int sum = 0, value = 0;
// read until end-of-file, calculating a running total of all values read
while (std::cin >> value)
sum += value; // equivalent to sum = sum + value
std::cout << "Sum is: " << sum << std::endl;
return 0;
}
我研究了while循环用于在满足条件时循环遍历给定代码的情况,但我在这里看不到条件……我看到的唯一参数是cin要求值,但我认为那不是条件
该表达式std::cin >> value
返回一个值(对stream的引用std::cin
)。true
如果读取成功和false
读取失败,则将值隐式转换为该值。该函数std::basic_ios<CharT,Traits>::operator bool
用于隐式强制转换。
我认为cppreference可以比我更好地描述它:
std::basic_ios<CharT,Traits>::operator bool
C ++输入/输出库std :: basic_ios
operator void*() const;
(1)(直到C ++ 11)
explicit operator bool() const;
(2)(自C ++ 11起)检查流是否没有错误。
- 如果
fail()
返回true
,则返回空指针,否则返回非空指针。该指针可以隐式转换为bool
布尔型上下文,并且可以在布尔型上下文中使用。- 返回
true
如果流没有错误并准备进行I / O操作。具体来说,return!fail()
。使用此运算符可以使用返回对流的引用作为循环条件的流和函数,从而导致惯用的C ++输入循环,例如
while(stream >> value) {...}
或while(getline(stream, string)){...}
。仅当输入操作成功时,此类循环才执行循环的主体。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句