2010-10-19 51 views
0

我有一个Python字典存储在一个文件,我需要从一个c + +程序访问。这样做的最好方法是什么?阅读使用c + +的Python字典

感谢

+0

”存储在文件中的python字典“ - 你是如何存储它的? cPickle,json? – eumiro 2010-10-19 07:48:58

+0

既不是,也是使用print语句写入文件 – mikip 2010-10-19 09:54:06

+0

没有任何示例或示例代码显示您如何编写它,我们没有什么可说的。请发布您的代码。 – 2010-10-19 10:16:59

回答

2

如何做到这一点取决于你已经序列化的python类型。基本上,蟒蛇打印类似...

{1: 'one', 2: 'two'} 

...所以你需要代码来解析这个。最简单的例子是在平面地图,从一个简单的类型到另一个,说的int INT:

int key, value; 

if (s >> c && c == '{') 
    while (s >> key) 
    { 
     if (s >> c && c == ':' && s >> value) 
      my_map[key] = value; 
     if (s >> c && c != ',') 
      break; 
    } 

可以扩大战果,将解析错误信息,支持嵌入式容器,字符串类型等。

您可能能够找到一些现有的实现 - 我不确定。无论如何,这给你一个非常粗略的想法,他们必须在内部做什么。

+0

谢谢你Tony – mikip 2010-10-19 11:47:59

+0

不客气。快乐的编码。 – 2010-10-19 11:57:13

1

有许许多多的Python/C++绑定(包括一个在升压),但我建议KISS:没有一个Python/C++结合,但原则是“保持简单,愚蠢”。

使用Python程序来访问字典。 :-)

您可以通过运行它们来从C++访问Python程序,或者您可以做更多奇特的事情,例如通过套接字或例如在Python和C++之间进行通信。 Windows“邮筒”,甚至是一些更完整的进程间通信方案。

干杯& hth。

0

我假设你的Python字典使用简单的数据类型并且没有对象(所以字符串/数字/列表/嵌套字典),因为你想在C++中使用它。

我建议使用json库(http://docs.python.org/library/json.html)对其进行反序列化,然后使用C++等价物将其序列化为一个C++对象。 “