【发布时间】:2017-10-29 15:48:30
【问题描述】:
我需要解析一个文件并获取失败位置(如果有)。问题是如果设置了failbit,tellg() 将毫无用处。
是否有一种优雅的(内置的?)方法可以找到设置failbit 的位置?
更新
使用clear()和tellg()是否有效?我找不到流的状态(包括位置)是否保证在失败后保持有效
【问题讨论】:
-
在
clear失败后,您可以继续从失败点读取流,因此必须保留位置。当解析器再次尝试读取无法解析的数据时,这有时会导致另一次失败。您必须以某种方式删除不良/意外数据。典型解决方案ignore一个令牌长度或切换到不同的解析状态以查找不同的数据。