cin.claer(cin.rdstate() & ~cin.failbit & ~cin.badbit)

cin.claer(cin.rdstate() & ~cin.failbit & ~cin.badbit); 

为什么这条语句完成了复位failbit和badbit而保持其他标志位不变的功能?
因为:
cin.rdstate() & ~cin.failbit & ~cin.badbit:这是一个位与操作,用于将 cin.rdstate() 的返回值与取反后的 failbit 和 badbit 进行与操作。这将导致除了 failbit 和 badbit 之外的其他标志位保持原样,而这两个标志位将被复位(即置为 0)。

cin.clear():clear() 是 cin 流对象的成员函数,用于设置流对象的状态。当 clear() 被调用时,它会接受一个整数参数,并将该整数的值设置为流对象的状态。

在这个语句中,我们将位与操作的结果作为参数传递给 clear() 函数,这将导致 cin 流对象的状态被设置为除了 failbit 和 badbit 之外的原来的状态,并将这两个标志位复位为 0。

因此,这条语句完成了复位 cin 流对象的 failbit 和 badbit 标志位,同时保持其他标志位不变。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值