Я хочу сделать функцию, которая находит последний элемент в буст :: property_tree :: Ptree и возвращает его в качестве Ptreeкак вернуть последний элемент наддува Ptree
Я следующий код, который находит последний элемент, однако я не знаю, как передать его ptree как возвращаемое значение - это должно быть возможно, однако я не нашел примеров, которые возвращают ptree без первого его копирования.
Причина желания это, чтобы быть в состоянии обрабатывать обновления последнего элемента с новыми значениями
BOOST_FOREACH(boost::property_tree::ptree::value_type const&rowPair, pt.get_child(""))
{
cout << rowPair.first << ": " << endl;
BOOST_REVERSE_FOREACH(boost::property_tree::ptree::value_type const& itemPair, rowPair.second)
{
std::cout << "\t" << itemPair.first << " ";
BOOST_FOREACH(boost::property_tree::ptree::value_type const& node, itemPair.second)
{
std::cout << node.second.get_value<std::string>() << " ";
}
std::cout << std::endl;
//TODO: return itemPair
break;
}
std::cout << std::endl;
}
Пытаясь прояснить это немного больше. следующие строки кода добавляет к уже существующей записи
pt.insert(pt.get_child("item").end(), subpt.front());
это прекрасно работает, если Items.item есть только один элемент, однако, если он имеет несколько «элементов» и несколько «пункт» в пунктах, то он будет вставить новый запись в первый Items.item
<xml>
<listOfItems>
<Items>
<item>
</item>
<item>
... inserts new sub pt here
</item>
</Items>
<Items>
<item>
</item>
<item>
... Should insert new sub pt here
</item>
</Items>
</listOfItems>
так, чтобы получить то, что я хочу, я что-то должен сделать заявление вставки лучше или создать функцию, которая может дать мне правильный элемент, а затем вставить в него
Что вы имеете в виду под "копированием"? и что происходит, когда вы просто «возвращаете» элемент, который вы нашли? – UnholySheep
Я предполагаю, что этот код должен находиться в отдельной функции (иначе это не имеет особого смысла в * возвращении чего-то)? Затем вы передаете 'pt' в качестве аргумента функции? если да, то что вам мешает вам просто делать это? 'return itemPair'? –
Да, очевидно, это должно быть в отдельной функции. Первоначально у меня было что-то вроде этого: pt.insert (pt.get_child ("Items.item"). End(), subpt.front()); - это приведет к обновлению Items.item с добавлением к нему нового подпакета, однако, если у меня было несколько записей элементов, оно всегда добавляется к первому элементу в списке Items, следовательно, необходимо найти и указать на последнюю запись – serup