处理输入流运算符中的无效输入>>

问题描述 投票:4回答:1

在提取运算符中处理无效输入的推荐(标准)方法是什么:

std::istream& operator>>(std::istream& is, SomeType& val) {
    // ...
    return is;
}

是否应该设置std::ios_base::failbit并立即返回?是否可以将val对象保持为未定义状态,并且其中某些变量可能已更改?

c++ istream
1个回答
0
投票

我会遵循标准库的约定-即设置failbit,将流指向您开始时的相同位置,并将输入设置为一些默认值-标准库将输入设置为0错误,请执行与您的类型相对应的任何逻辑等效操作,可能是val = SomeType{};

© www.soinside.com 2019 - 2024. All rights reserved.