我设法将pgn文件解析为几个游戏mainly thanks to this forum。
但是,由于我必须处理的文件有这么多游戏,因此在我最近的计算机上进行此过程可能需要两分钟。这就是为什么我想使用这个解析器在GUI应用程序上设置进度条的动画。
我认为最简单的方法是问问"精神他已经处理了多少个角色,剩下多少个角色。 (或者剩余多少行并且已经处理过。)
有可能吗?如果是这样,我如何修改解析器文件以获得此比率?
答案 0 :(得分:2)
您可以使用line_pos_iterator
以及可能来自存储库的iter_pos
原语。
(@ GuyGreer :)没有办法知道所涉及的回溯量(否则,首先不需要回溯)。所以,最好的办法是接受你得到的某种“平均吞吐量”,有时可能会有点突发或滞后。如果你的语法不平衡,这些变化不仅仅是噪音,你应该考虑首先修复语法/解析器的定义。
为了解决不知道流长度的“问题”,除了不将其作为流之外,你无法修复它。
我建议使用内存映射。您可以使用boost::iostreams
,boost::interprocess
或mmap
中的设施。
我估计我至少有3个答案展示了这个答案中提到的每种技术,所以我只是搜索这个网站。