2013-04-02 41 views
0

我正在編寫一個程序來記錄關於程序中變量的信息。我想通過文件 - >函數 - >變量來分組這些信息。在boost中存儲類:: property_tree

升壓:: property_tree似乎是一個不錯的選擇這個,因爲我可以在樹(file.function.variable)的路徑存儲訪問對象,然後輕鬆地將樹轉換爲XML,JSON等

說我記錄了一個變量的使用次數。我可以擁有一個Access類,用於跟蹤寫入次數並讀取到變量。然後,我可以將此對象存儲在樹中的file.function.variable中。每次訪問變量時,我都可以在樹中找到變量並更新關於它的信息。

但是,我無法弄清楚如何在樹中存儲一個類。我假設有一些我需要實現或子類,但文檔沒有解決我想要做的事情。

有沒有解決我的問題?有沒有更好的替代boost :: property_tree?

謝謝。

回答

0

boost::property_tree旨在保存文本數據。這就是爲什麼它適合導出到XML,JSON等。

修改您的類Access,因此它包括用於轉換文本/從文本轉換爲文本的方法並將該文本存儲在樹中。

+0

我不是真的想擁有這樣一個巨大的嵌套結構,因爲它會變大隨着嵌套變得更深。例如,我可能希望將來通過文件夾 - >文件 - >功能 - >變量存儲內容。理想情況下,我希望向我的類添加一個方法,以便在包含它的樹上調用write_json(tree)時將其轉換爲XML/JSON。 – tgt

+0

因此,絕對沒有辦法將類存儲爲節點,並且在轉換開始時有一種將其轉換爲適當文本格式的方法?我想將Access對象存儲在樹中,因爲它們將在我的程序運行時更新,我不能將它們轉換並存儲文本,因爲我需要稍後訪問和更新它們的方式。 – tgt

+0

@tgt絕對可以完成,但根據您的獨特需求列表,可能沒有預先編寫的解決方案。 –

0

您可以放棄樹的想法,並堅持使用鍵值對的平面地圖。

例子:

std::map<std::string, Access> accesses; 
// add one access 
accesses["file.function.variable"] += 1; 

你只需要編寫,從它的內容,這應該是直接產生JSON的例程。 (假設鍵的第一部分始終是文件,第二部分始終是該函數,第三部分總是變量)。

相關問題