下面的代碼從ini文件讀取屬性。但是,我希望該屬性具有默認值。在閱讀ini文件之前,我使用put
來完成此操作,然後使用get
檢索該屬性。property_tree:無法設置默認屬性值?
這工作正常,如果默認不是必需的,程序輸出testval is 2
。但是,如果我註釋掉ini文件中的條目(如圖所示),則程序輸出No such node (foo.bar)
。換句話說,pt.put
未設置默認值。任何想法爲什麼?我在升壓105300.
#include <iostream>
#include <boost/property_tree/ptree.hpp>
#include <boost/property_tree/ini_parser.hpp>
int main() {
boost::property_tree::ptree pt;
int testval = 0;
try {
pt.put("foo.bar", 1); // set a default value
boost::property_tree::ini_parser::read_ini("test.ini", pt);
testval = pt.get<int>("foo.bar");
} catch(boost::property_tree::ptree_error const& e) {
std::cout << e.what() << '\n';
return 1;
}
std::cout << "testval is " << testval << '\n';
return 0;
}
而且test.ini
是:
[foo]
;bar = 2
但如果我把'pt.put' * *後的'read_ini',在ini文件中的值總是被忽略,而我總是' testval是1' ...? – EML