繁体   English   中英

什么时候检查 std::ifstream::good() ?

[英]When exactly to check std::ifstream::good()?

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

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

大多数时间在 C++ 中,在哪里/何时调用ifs.good()

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

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

你永远不需要明确关闭流开始good()是一个函数:

检查流状态是否良好

如果没有设置流的错误状态标志(eofbit、failbit 和 badbit),则返回 true。

您可以调用它来验证某些事情是否进展顺利,然后验证其他位以检查出了什么问题。 例如 :

  • 输入操作到达文件尾 (eofbit)

  • I/O 操作的逻辑错误 (failbit)

  • I/O 操作的读/写错误 (badbit)

但是,在手动关闭流时调用 good to think 是没有用的。

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

在我看来,在这种情况下您不需要调用good() ,但是如果您想调用它,最好在tellg()之后调用它,它可以在执行过程中设置一些失败。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM