我目前正在解析器項目獲取一些文件xml格式1到另一個xml格式。更好的方法來解析一個配置文件在C++
我完成我的項目,有靜有很多的參數就知道了,他們大多是路徑的一些文件,參數列表,...
我想它很容易使用,因此我創建了一個SETTINGS.TXT:它包含像
someparameter = defaultvalue
行此文件很容易modify.I考慮的情況下,人們想分析與相同參數的文件,所以我的應用程序是這樣的:
Do you want to change parameters? (Y/N)
if(yes){
Do you want to change paramater 1? //If no value, [] stays
[pathbydefault]
}
...
else{ load from settings.txt}
爲了實現這個,我使用getline(),首先分割'='並將它們放在std :: map中。 我認爲這是一個糟糕的選擇,我搜索了一下,並且我發現了很多C++架構:list(真的很重要10個參數),table(不容易閱讀,代碼對其他人而言很暗)。
您建議我使用什麼解決方案? 當然,我不要求執行,只是爲了一些解決方案來考慮。一些信息:我不認爲如果它很重要,但我工作在基於Unix的系統(Mac OS或Linux),所以我不能使用Windows庫。我看到了一個Windows解決方案,但我沒有深入這一點。
我使用和推薦[SimpleIni(https://github.com/brofield/simpleini)。諷刺的是,XML解析器不會將其設置存儲在XML文件中。但我不能責怪你,XML對此太難處理了。 '[section] key = value'格式非常容易。與Windows INI文件格式相同,但這些API在本世紀尚未更新,所以即使在Windows上也不應使用它們。 –
謝謝,當我不使用Windows ini時,我覺得缺少更好的解決方案。 關於設置格式,我用我自己的程序解析它們,但實際上,我可以使用C++ –
多年來,我已經編寫了多種語言的類來處理這個問題。您可以使此代碼複雜或簡單,以滿足您的需求。例如,你允許評論,然後你跳過這些。你可以在行尾註釋一下嗎?你是否修剪了字符串以擺脫空格?如果是的話,你是否支持轉義字符以允許它們在開始或結束時嵌入?所有這一切說,使用現有的圖書館是一個好主意,如果它符合你的許可要求,並且如果你不擔心它將來不存在的話。 – Andrew