何时准确检查std :: ifstream :: good()?

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

假设我有一个代码来计算文件的大小:

std::ifstream ifs(path, std::ifstream::ate | std::ifstream::binary);
unsigned int size = ifs.tellg();
ifs.close();

在C ++中,大多数时候,调用ifs.good()的位置/时间?

就我而言,创建流后还是调用tellg()之后会更好?

然后,如果good()返回false,我应该显式关闭流吗?

c++ ifstream
1个回答
1
投票

您无需显式关闭流的角度出发],good()是以下功能:

检查流的状态是否良好

如果没有流的错误状态标志(eofbit,failbit和badbit)。

您可以调用它来验证是否出现问题,然后验证其他位以检查出什么问题。例如:

  • 输入操作结束时到达文件末尾(eofbit)

  • I / O操作上的逻辑错误(失败)

  • I / O操作上的读/写错误(坏位)

  • 但是,在流的手动关闭上调用好思考没有用。

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