1

我有一段生成数据的 C++ 代码。我想将数据公开给 Python。但这并不像听起来那么微不足道...

假设这个 C++ 编译成二进制文件cppcode。由于框架设置的复杂方式,我只能将代码运行为

./cppcode {command line arguments} 

在 cppcode 内部,它生成我想从 Python 访问的数据。我知道我是否可以以某种方式将程序重写为

CppClass cpp; 
cpp.run( args );

然后我可以用 Boost Python 封装 CppClass,构建一个实例,使用参数运行,并访问生成中的数据。

但是现在我只能将代码运行为./cppcode {command line arguments}

我不能只./cppcode从 Python 调用,因为在 ./cppcode 完成后,它的内存将被系统重新收集,我再也无法从 Python 中看到它了。有没有办法解决这个问题?

我能想到:(1)让./cppcode把数据转储到磁盘,让python读取。(2) 将数据转储到标准输出并通过管道传输到 python 脚本中。但无论哪种方式,我都必须在 Python 中进行一些可能很慢的字符串解析。有没有办法绕过它?

4

1 回答 1

1

您可以将 ccpcode 中的 JSON 格式的数据转储到磁盘上,然后简单地使用 python 中的 simplejson 来解析它。然后,您不必编写任何自己的解析器。

以下是 C++ JSON 模块的一些示例:https ://stackoverflow.com/questions/245973/whats-the-best-c-json-parser

于 2012-03-06T14:57:23.250 回答