2010-10-19 98 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++對象。 「