【问题标题】:Does "std::cin >> value" return a Zero if input is EOF? [duplicate]如果输入为 EOF,“std::cin >> value”是否返回零? [复制]
【发布时间】:2016-01-19 03:24:28
【问题描述】:

考虑下面的代码

int main(){ 
int sum = 0, value = 0;
while (std::cin >> value)
sum += value; 
std::cout << "sum is: " << sum << std::endl;
return 0;
}

>> 运算符的返回值是多少,while 循环是根据它计算的?程序在 EOF 输入时终止(Windows 为 Ctrl+Z)。这是否意味着 0 在 EOF 的情况下存储到 cin ?它与 EOF 的 ASCII 值有关吗?

【问题讨论】:

  • std::istream&amp;,但这个问题是重复的。
  • 嗯,还是不要这个,但总的来说它有很多答案。
  • stringstreamcin 无关紧要,答案适用于所有 std::istreams。
  • 可能是个愚蠢的问题。返回值如何终止 while 循环?如果输入为 EOF,返回值是否为零?

标签: c++


【解决方案1】:

returns 引用basic_ifstream

basic_istream& operator>>

if 的上下文中,它转换为true,除非在其状态中设置了std::ios_base::failbitstd::ios_base::badbit

【讨论】:

  • 返回值如何终止while循环?如果输入为 EOF,返回值是否为零?
  • @Paul259,如果cin 的状态将设置为badbitfailbit(例如,如果cin &gt;&gt; some_integer_variable 读取的不是数字),它将转换为false 循环结束。
【解决方案2】:

根据this reference,返回类型为istream&amp;

【讨论】:

    【解决方案3】:

    它返回对std::cin 的非const 引用。

    【讨论】:

      猜你喜欢
      • 2016-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-23
      • 1970-01-01
      • 2021-02-26
      相关资源
      最近更新 更多