以下のコードは、iniファイルからプロパティを読み取ります。しかし、プロパティをデフォルト値にしたい。私はput
でこれを行い、iniファイルを読み込み、次にget
でプロパティを取得します。property_tree:デフォルトのプロパティ値を設定できませんか?
これは、デフォルトが不要で、プログラムがtestval is 2
を出力する場合に問題ありません。ただし、iniファイルのエントリをコメントアウトすると(図のように)、プログラムはNo such node (foo.bar)
を出力します。つまり、pt.put
はデフォルト値を設定していません。なぜどんなアイデア?私は
#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
ブースト105300.によです:read_ini()
のドキュメントを1として
[foo]
;bar = 2
しかし、 'read_ini'の後ろに' pt.put' *を置くと、iniファイルの値は常に無視され、常に ' testvalは1'です...? – EML