C++ I/O流标志如何工作?
我正在从LearnCpp网站学习,我遇到了这样一行:“如果发生错误,并且流被设置为goodbit以外的任何内容,则该流上的进一步流操作将被忽略。可以通过调用clear()函数来清除此条件。”。然而,在ios_基类中,我注意到标志被设置为静态的,这意味着它们由类的每个实例共享,这难道不意味着如果例如cin将fatalbit标志设置为true,则istream类的所有其他实例都将不起作用吗?标志本身没有改变,它们是静态常量。每个标准流中存在的底层位掩码发生了什么变化。C++ I/O流标志如何工作?,c++,iostream,C++,Iostream,我正在从LearnCpp网站学习,我遇到了这样一行:“如果发生错误,并且流被设置为goodbit以外的任何内容,则该流上的进一步流操作将被忽略。可以通过调用clear()函数来清除此条件。”。然而,在ios_基类中,我注意到标志被设置为静态的,这意味着它们由类的每个实例共享,这难道不意味着如果例如cin将fatalbit标志设置为true,则istream类的所有其他实例都将不起作用吗?标志本身没有改变,它们是静态常量。每个标准流中存在的底层位掩码发生了什么变化。clear()所做的是重置掩码并
clear()
所做的是重置掩码并设置提供的标志(ios\u base::goodbit
my default)。标志本身没有更改,它们是静态常量。每个标准流中存在的底层位掩码发生了什么变化。clear()
所做的是重置掩码并设置提供的标志(ios\u base::goodbit
my default)。标志本身没有更改,它们是静态常量。更改的是每个标准流中存在的基础位掩码。@0x499602D2您应该将其作为答案发布,因为它是正确的。标志本身没有更改,它们是静态常量。每个标准流中存在的基础位掩码有什么变化。@0x499602D2您应该将其作为答案发布,因为它是正确的。