C++ istream:gcount() 是否总是在 read() 之后设置,即使它失败了

C++ istream: Is gcount() always set after a read() even if it fails?

本文关键字:设置 之后 失败 gcount istream 是否 C++ read      更新时间:2023-10-16

我正在使用istream和read()读取一些数据。我想知道我是否可以只测试gcount()的字节,或者我是否需要在调用gcount()之前测试good()eof()等的某种组合。换句话说,即使由于EOF或其他内部问题导致读取失败,gcount()是否总是在read()之后设置?

此外,如果这在标准中或您可以引用的地方进行了描述。我使用 cplusplus.com 作为参考,它说gcount"返回对对象执行的最后一个无格式输入操作提取的字符数"。 无论结果如何,我是否可以将"上次操作"之类的语句解释为表示上次操作?

gcount()是否总是在read()后设置,即使由于EOF或其他一些内部问题导致读取失败?

是的

gcount()的工作只是返回从最后一个无格式输入操作中提取的字符数。该标准没有区分提取成功和失败时的gcount()值。显然,如果输入操作无法提取字符,则该值将0

因此,您只需要将其用作条件即可测试提取是否成功。仅当希望确定是否提取了一定数量的字符时,才在条件中使用gcount()