作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我设法将一个 pgn 文件解析为多个游戏 mainly thanks to this forum .
但是,由于我要处理的文件有很多游戏,在我最近使用的电脑上,这个过程可能需要两分钟。这就是为什么我想使用此解析器在 GUI 应用程序上制作进度条动画。
我认为最简单的方法是“询问” spirit 他已经处理了多少个字符,还有多少个字符剩余。 (或者还有多少行剩余并已处理)。
这可能吗?如果是这样,我需要如何修改解析器文件才能获得此比率?
最佳答案
您可以使用 line_pos_iterator
并可能使用存储库中的 iter_pos
原语。
(@GuyGreer:) 没有办法知道所涉及的回溯量(否则,一开始就不需要回溯)。因此,最好的办法是接受您获得某种有时可能有点突发或滞后的“平均吞吐量”。如果您的语法不平衡,以至于这些变化不仅仅是噪音,您应该首先考虑修复语法/解析器定义。
为了应对不知道流长度的“问题”,除了不将其作为流外,您无法修复它。
我建议内存映射。您可以使用 boost::iostreams
、boost::interprocess
或仅使用 mmap
的工具。
我估计我至少有 3 个答案来展示这个答案中提到的每一种技术,所以我只是在这个网站上搜索它们。
关于c++ - 振奋 spirit 2 : is there a way to know what is the parser progression percentage?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34211394/
我是一名优秀的程序员,十分优秀!