gpt4 book ai didi

C++: boost ptree remove children: 没有匹配函数

转载 作者:太空宇宙 更新时间:2023-11-04 12:58:45 24 4
gpt4 key购买 nike

为了删除 boost 属性树的子节点,我在 erase 函数中使用了一个直接节点,这导致了

error: no matching function for call to 
‘boost::property_tree::basic_ptree<std::__cxx11::basic_string<char>,
std::__cxx11::basic_string<char> >::erase(std::pair<const
std::__cxx11::basic_string<char>,
boost::property_tree::basic_ptree<std::__cxx11::basic_string<char>,
std::__cxx11::basic_string<char> > >&)’

pt0.erase(pt_child);

代码的正确形式是什么?

#include <iostream>
#include <boost/property_tree/ptree.hpp>
#include <boost/property_tree/json_parser.hpp>

using namespace boost::property_tree;

void print(const ptree &p)
{
json_parser::write_json(std::cout, p);
}

int main()
{
ptree pt0;

for(int i=0;i<10;i++)
pt0.put_child("kid"+std::to_string(i+1),ptree());
print(pt0);

for(auto& pt_child : pt0)
pt0.erase(pt_child);
print(pt0);

return 0;
}

最佳答案

你可以这样做:ptree.get_child("path.to").erase("child");请注意,这会删除路径“path.to”及其子节点中名为“child”的所有节点。

关于C++: boost ptree remove children: 没有匹配函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45253513/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com