int main()
{
   std::ifstream istr( "foo.txt" );
   int a, b;
   istr >> a;
   istr >> b;
}

假设istr >> a行设置了流的故障位或错误位。随后调用istr >> b是否已定义行为?

最佳答案

是的,这是明确的。格式化输入的第一阶段是构造一个sentry对象,该对象检查流的状态。如果状态不好,则提取将不执行任何操作。

此后再使用b的值将是未定义的行为,因为它仍未初始化。

关于c++ - 是否以失败/不良状态在istream上调用operator >>的未定义行为?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26755633/

10-12 15:02