2015-03-05 2 views
2

Есть ли возможность удалить ребенка (и его возможные дочерние элементы) из дерева свойств, которое известно через его путь?Дерево свойств Boost: удаление ребенка, зная его путь

Следующий

auto child = ptree.get_child(path); 
child.clear(); 

не удаляет ребенка, но только ее содержание.

Функция члена erase принимает итератор или ключ. Я не знаю, как легко найти итератор, соответствующий пути, без необходимости проходить через дерево.

Можно найти «корневых» детей путем разбиения пути на точечные символы и erase Остальные. Однако есть ли более легкий/более короткий способ добраться туда?

ответ

3

Вы можете сделать это: ptree.get_child("path.to").erase("child"); Обратите внимание, что это удаляет ВСЕ узлы с именем «child» в пути «path.to» и их дочерних элементов.