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/