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