在C ++ Primer中给出的一个例子中,
#include <iostream>
using namespace std;
int main() {
int sum = 0, value = 0;
while (std::cin >> value) {
sum += value; // equivalent to sum = sum + value
}
std::cout << "Sum is: " << sum << std::endl;
return 0;
}
(std :: cin&gt;&gt;值)如何返回true?什么是“文件结束”?似乎我必须理解这个术语才能理解我的主要问题。
谢谢!
答案 0 :(得分:8)
overloaded operator>>
function返回对流本身的引用,流具有an overloaded operator,允许在布尔条件下使用它来查看上一次操作是否正常。部分“好或不好”包括文件结束或其他错误。
答案 1 :(得分:0)
C ++翻译这一行
while (std::cin >> value)
类似
inline bool f(int v) {
auto& i = std::cin >> v;
return i.operator bool();
}
while( f(v) ) {
为什么它会转换为bool?
因为while需要一个布尔表达式,所以编译器搜索返回std::cin >> v
的布尔转换运算符。
什么是bool转换运算符? 布尔转换运算符将对象转换为bool。如果代码的某些部分期望某些类型可以作为布尔值(如强制转换),则使用此运算符。
什么是运营商? 是一个覆盖某些operationg表达式(+, - ,cast, - &gt;等)行为的函数或方法
答案 2 :(得分:-5)
如果您是初学者,则不需要撰写
的std ::
每次。如果你写了:
使用namespace std;
它会成功。我希望你明白这一点。 :)