我希望验证读取对文件的完美读取,有没有办法?
答案 0 :(得分:2)
检查状态标志:
eofbit
failbit
badbit
或检查是否抛出ios_base::failure
异常
答案 1 :(得分:2)
不确定“完美阅读”是什么意思,但如果设置为failbit
流无法读取请求的字符数;在
换句话说,如果你要求20个字节,并且只有19个可用,那么
读取被视为失败。
测试失败的常用方法是将流视为 布尔值,例如:
if ( input ) // succeeded
或
if ( ! input ) // failed
(这也需要考虑badbit
,如果存在的话,将会设置istream::read
在阅读时是一个实际的I / O问题。)
如果是istream::gcount
,您可能还想查看
istream::gcount
如果失败; while ( input.read(...) || input.gcount() != 0 ) {
// process input.gcount() characters...
}
返回
最后一次未格式化读取所读取的字符数,即使是在
失败。因此,在读取原始数据时,使用它并不常见
类似的东西:
{{1}}
这与通常的习语略有不同,后者一旦停止就会停止 输入失败。