例如,我可以只清除 failbit 标志吗? ios::clear 似乎清除了所有标志,或设置了个别标志。 ios::setstate 似乎也设置了单独的标志但没有清除它们。
我问的原因是因为如果设置了 badbit,我不想清除它。
最佳答案
仅清除 failbit
例如std::cin
,你可以使用
std::cin.clear(std::cin.rdstate() & ~std::ios::failbit);
您需要在 rdstate()
和您要清除的标志位的否定之间进行按位与运算,否则您只是在设置该标志。如果您考虑一下,这是有道理的:rdstate()
返回设置标志的状态,然后将其与您要删除的标志的否定进行 AND 运算,只会删除该标志,什么也不会else被修改。
关于c++ - 可以清除流的单个错误状态标志吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41819813/