gpt4 book ai didi

c++ - 为什么我必须在输入的末尾输入一个非整数才能结束程序?

转载 作者:搜寻专家 更新时间:2023-10-31 00:37:49 24 4
gpt4 key购买 nike

#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;
}

这段代码如何知道何时完成抓取输入值并显示总和?为什么只有输入非整数值才结束?

最佳答案

std::istream& operator>>(int) 的计算结果为 false 时,您的循环结束。如果流已到达文件末尾或已标记为错误,则会发生这种情况。输入 float 会导致后者发生。

详情:
每个流都包含一个指示流状态的位掩码。掩码中的位包括一个 eof 位、一个失败位和一个坏位(std::ios_base::eofbitstd::ios_base::failbitstd::ios_base::badbit)。第一个很明显:它是在达到 EOF 时设置的。接下来的两个有点棘手。 std::ios_base::failbit 在输入操作未能读取预期字符时设置,或在输出操作未能生成所需字符时设置。 std::ios_base::badbit 在出现严重错误时设置,例如,您的磁盘被炸毁。从流引用到 bool 值的转换最终涉及检查这些位中没有一个被设置。 float 中的小数点会导致设置失败位,进而导致循环结束。

关于c++ - 为什么我必须在输入的末尾输入一个非整数才能结束程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19191056/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com