2011-02-28 66 views
-1

我打算使用yaml,因爲它有很棒的功能叫做merge! (「< <」key)YAML的替代腳本?

而我使用'yaml-cpp'作爲解析器,因爲我正在使用cpp。

但是! yaml-cpp不支持合併。我能爲替代品做些什麼?

其他腳本,其他解析器,其他解析方式或其他方式,如果我可以使用合併功能。

但我不需要合併多個對象。我只需要定義一些東西並創建另一個從第一個繼承的對象並覆蓋一些值。那它。

感謝您的閱讀。

+0

這顯然是你的[上一個問題]的「凹凸」(http://stackoverflow.com/questions/5101542/script-that-support-merge-feature-like-yaml)。對不起,你之前沒有得到答案,但解決方案是編輯它,而不是浪費人們的時間與重複。 –

+0

我發佈這個問題之前,我刪除了它。現在你的鏈接被破壞了。我不知道你是如何找到我以前的問題的。也許它被標記爲刪除後很少被刪除。這仍然是不好的方式來發布問題嗎?編輯上一個和刪除舊的問題和發佈新問題有什麼區別?我的目的是把我的問題放在第一頁上。編輯上一個問題的方式是否相同? – SeniorLee

+0

鏈接沒有被破壞,你只是沒有聲望去查看它。正如我所說,這很糟糕,因爲它浪費了人們的時間。閱讀您以前的問題的人會看到一個沒有提供其他信息的新人。真正的新問題屬於頭版。 –

回答

0

如果您無法等待,需要合併,您可以通過在YAML-CPP問題「鮑文」按照建議:http://code.google.com/p/yaml-cpp/issues/detail?id=41#c12

的變化是插入下面的線爲FindValueForKey模板( for循環和return 0)之間:

問題

const Node *pValueMerge = FindValueForKey(std::string("<<")); 
if(pValueMerge) { 
    return pValueMerge->FindValueForKey(key); 
} 
(如我的問題頁面上提到的)是,規範允許

<<: [*dict1, *dict2] 

合併多個字典;但看起來你並不需要這個。

+0

我試過這個,但它似乎陷入了無限循環。也許我把這個代碼放在了錯誤的地方。你試過這個嗎?它真的有用嗎?我可能不得不再次嘗試 – SeniorLee

+0

還有一件事,即使它工作,迭代通過節點不被支持是嗎?該代碼只適用於按鍵查找時我猜。 – SeniorLee

+0

@SeniorLee - 首先,這實際上是否適合你? (我無法確定,因爲您接受了答案但發佈了該評論。)其次,這是正確的,您將無法遍歷合併節點,除非您明確地這樣做。 –

0

詢問'yaml-cpp'來實現該功能。

+0

對此已有一個公開的問題(自2009年開放)。我沒有時間等到實施。謝謝。 – SeniorLee