假设我有以下代码:
std::ifstream file(name, flags);
file.seekg(0, std::ios::beg);
// Check for error
file.read(buffer, size);
// Check for error
检查错误搜索/阅读的最简洁方法是什么?我应该检查ios :: fail和ios :: bad位吗?这些失败会触发异常吗? (我相信你必须手动注册失败例外)
答案 0 :(得分:2)
当这两个函数失败时,它们会在错误掩码中设置某些标志,您可以在if语句中检查这些标志。流的布尔转换运算符将检查failbit
或badbit
的掩码,如果这两个都未设置,则返回true。默认情况下不会抛出异常,但您可以使用exceptions()
方法设置异常。
if (!file.seekg(0, std::ios::beg)) {
// Check for error
}
if (!file.read(buffer, size)) {
// Check for error
}