2016-03-25 33 views
0

我正在学习LearnCpp网站,并且遇到了这一行:“如果发生错误并且流设置为goodbit以外的任何其他流,则该流上的其他流操作将被忽略。可以通过调用清除()函数“。然而在ios_base类中,我注意到这些标志被设置为静态,这意味着它们由类的每个实例共享,那么不是说如果例如cin将fatalbit标志设置为true,则istream类的所有其他实例都会赢得'工作?I/O流标志如何工作?

+3

标志本身没有改变,它们是静态常量。每个标准流中存在的底层位掩码有哪些变化。 – 0x499602D2

+0

@ 0x499602D2您应该将此作为答案发布,因为它是正确的。 –

回答

3

标志本身没有改变,它们是静态常量。每个标准流中存在的底层位掩码有哪些变化。 clear()所做的是重置掩码并设置提供的标志(默认为ios_base::goodbit)。