gpt4 book ai didi

c++ - cin流错误

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

int main()
{
int i;

if (cin >> i)
{
//ok
}
else
{
//error
cin.setstate(std::ios_base::goodbit);
}
}

为什么我不能通过 setstate() 设置 goodbit 来清除 failbit 而不是 cin.clear()?

最佳答案

因为 setstate 将当前状态与您通过按位 OR 传递给它的任何状态相结合,因此失败位不会被清除(设置为零) .

所以假设:

Assume a very simple state mechanism:
00
^^
||
|\
| the fail bit
\
the ok bit

当你的状态是 01 时执行 setstate(okbit) 只会给你 11(看妈妈,失败位仍然是set) 所以实际上你所做的只是搞砸了内部流状态。您真的应该完全避免使用 setstate

Click供引用。

关于c++ - cin流错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6052385/

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