while(std :: cin>>值)如何工作?

时间:2015-11-12 15:03:25

标签: c++

在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?什么是“文件结束”?似乎我必须理解这个术语才能理解我的主要问题。

谢谢!

3 个答案:

答案 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;

它会成功。我希望你明白这一点。 :)