我正在使用istream和read()
读取一些数据。我想知道我是否可以只测试gcount()
的字节,或者我是否需要在调用gcount()
之前测试good()
、eof()
等的某种组合。换句话说,即使由于EOF或其他内部问题导致读取失败,gcount()
是否总是在read()
之后设置?
此外,如果这在标准中或您可以引用的地方进行了描述。我使用 cplusplus.com 作为参考,它说gcount
"返回对对象执行的最后一个无格式输入操作提取的字符数"。 无论结果如何,我是否可以将"上次操作"之类的语句解释为表示上次操作?
gcount()
是否总是在read()
后设置,即使由于EOF
或其他一些内部问题导致读取失败?
是的
gcount()
的工作只是返回从最后一个无格式输入操作中提取的字符数。该标准没有区分提取成功和失败时的gcount()
值。显然,如果输入操作无法提取字符,则该值将0
。
因此,您只需要将其用作条件即可测试提取是否成功。仅当希望确定是否提取了一定数量的字符时,才在条件中使用gcount()
。