我有一段生成数据的C ++代码。我想将数据暴露给Python。但它并不像听起来那么微不足道......
说这个C ++编译成二进制文件cppcode
。由于框架设置的复杂方式,我只能将代码作为
./cppcode {command line arguments}
在cppcode内部,它生成我想从Python访问的数据。我知道如果我能以某种方式将程序重写为
CppClass cpp;
cpp.run( args );
然后我可以用Boost Python包装CppClass,构建一个实例,运行参数,并访问generate中的数据。
但现在我只能将代码作为./cppcode {command line arguments}
我不能只从Python调用./cppcode
,因为在./cppcode完成后,它的内存将被系统重新收集,我再也看不到它了。有没有办法解决这个问题?
我能想到:(1)让./cppcode将数据转储到磁盘中让python读取它。 (2)将数据转储到stdout并将其转换为python脚本。但无论哪种方式,我都必须在Python中进行一些可能很慢的字符串解析。有办法解决它吗?
答案 0 :(得分:1)
您可以将来自ccpcode的JSON格式的数据转储到磁盘上,然后只需使用python中的simplejson来解析它。然后你就不必编写自己的解析器了。
以下是C ++ JSON模块的一些示例:https://stackoverflow.com/questions/245973/whats-the-best-c-json-parser