#include <boost/property_tree/ptree.hpp>
#include <string>
#include <iostream>
int main()
{
boost::property_tree::ptree ptree;
const std::string entry = "server.url";
ptree.add( entry, "foo.com" );
auto range = ptree.equal_range( entry );
for( auto iter = range.first ; iter != range.second ; ++iter )
std::cout << iter->first << '\n';
}
Я не понимаю, почему этот код не печатается. Как может быть много server.url записи, я пытался получить к ним доступ с помощью equal_range
,
equal_range
не работает с путями. После добавления ваше дерево выглядит так:
<root>
"server""url": "foo.com"
Но equal_range
ищет детей с именем «server.url» непосредственно в корневом узле.
Кроме того, вы, вероятно, хотите распечатать it->second.data()
потому что первый просто напечатает «server.url» для каждой найденной записи.
Вот исправленный код:
#include <boost/property_tree/ptree.hpp>
#include <string>
#include <iostream>
int main()
{
boost::property_tree::ptree ptree;
const std::string entry = "server.url";
ptree.add( entry, "foo.com" );
auto range = ptree.get_child("server").equal_range( "url" );
for( auto iter = range.first ; iter != range.second ; ++iter )
std::cout << iter->second.data() << '\n';
}