gpt4 book ai didi

c++ - Good() 和 fail() 的理解

转载 作者:行者123 更新时间:2023-11-28 04:02:37 24 4
gpt4 key购买 nike

输入:10 20 30
输出:60

输入:10 和 20
输出:10

因为它得到了一些不是数字的东西。我无法理解 good()fail() 在这里是如何工作的。

int sum(istringstream & text) noexcept {
int sum = 0;
int current = 0;
while (text.good())
{
text >> current;
if (!text.fail())
{
sum += current;
}
}
return sum;
}

最佳答案

失败

您尝试将不是数字的内容读入整数。这将触发您的字符串流中的故障位。failbit 基本上阻止您完全使用该流(考虑您的流“损坏”)。failbit 将保持打开状态,直到对象被销毁或直到您使用 text.clear() 手动将其删除。


std::ios::fail
Check whether either failbit or badbit is set
Returns true if either (or both) the failbit or the badbit error state flags is set for the stream.
At least one of these flags is set when an error occurs during an input operation.

failbit is generally set by an operation when the error is related to the internal logic of the operation itself; further operations on the stream may be possible.

另请查看此表 enter image description here

如果您查看“检查状态标志的函数”下的 fail() 列,您会看到 fail() 在两种情况下返回 true:

  1. I/O 操作逻辑错误
  2. I/O 操作读/写错误(你的情况)

Source


对于 good(),它会检查当前是否没有标志(有关标志,请参见上表)。

Returns true if none of the stream's error state flags (eofbit, failbit and badbit) is set.

关于c++ - Good() 和 fail() 的理解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59254179/

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