[英]In what practical case bool(std::ifstream) != 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.