我编写了这个解析器程序,它以std :: map的形式从多个文件(500多个条目)中返回一个很好的信息结构。
一个元素如下:
anObject -> Name [String]
ID [Int]
Children [list(anObject)]
现在我想将它们显示在GUI中。如您所见,1个对象可以包含更多对象。然后,通过迭代特定对象的子项来打印所有存在的对象。
(例如" print objectA - objectA有孩子吗? - 打印孩子" ...)
我已经和#34;对话"对于它自己,但是在dialog / bash和C ++程序之间是否有接口,以便对话框GUI可以与我的地图交互?如果没有GUI的任何好的替代品?
我已经看过一种从c程序运行bash(以及因此也是对话框)的方法,但他们并没有谈论彼此之间的接口。
亲切的问候
答案 0 :(得分:1)
有两种可能性浮现在脑海中:
C ++程序运行一次并生成bash脚本选择并使用的输出文件。虽然,正如你所说,这似乎是工作的两倍,C ++解析产生了一些bash然后需要解析的东西,这实际上与一般的脚本哲学非常一致:将特定工具(grep,sort,tail,sed ......)链接在一起实现一些更大的目标。我们将硬件委托给一些专门的程序,并产生一个格式很好的结果,bash可以很容易地使用。这意味着您可能会调整C ++输出,以便在bash中轻松解析。
另一种方法是让C ++程序在后台有效地作为服务运行。在最常见的情况下,它可以是Web服务或REST服务。因此,您的UI只是向服务发出(说)HTTP请求并使用答案。我认为使用命名管道可以更简单地与后台进程进行交互,但是自从使用bash进行Indid以来已经有好几年了,所以我不知道它是否适用于UI。
总的来说,我的感觉是,如果你真正的目标是制作一个漂亮的用户界面,那么bash不是最好的工具,PHP或任何网络应用程序构建工具可能更容易。但是,如果学习bash是目标,那么探索命名管道可能很有趣。