c++ - 可以清除流的单个错误状态标志吗?

标签 c++

例如,我可以只清除 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/

相关文章:

C++ 动态分配不匹配 : Is this problematic?

C++11 g++ 带有大括号括起来的初始化列表

c++ - 从 int 到 enum 类类型的转换可能吗?

c++ - RobuSTLy 找到 N 个直径相同的圆 : alternative to bruteforcing Hough transform threshold

c++ - SetWindowsHookEx DLL卸载

c++ - 有条件地使用 OpenGL 扩展

c++ - 如何在 C++ 中加载共享对象?

c++ - N叉树实现

c++ - 如何将字符串数组的值分配给 "Name"+ #,例如。名称 1、名称 2、名称 3 等。C++

c++ - 如何设置动态链接库的试用版?