gpt4 book ai didi

c++ - boost::property_tree 传递包含 的子树

转载 作者:搜寻专家 更新时间:2023-10-31 01:32:51 24 4
gpt4 key购买 nike

我试图将 boost::property_tree::ptree 的元素传递给一个函数。详细地说,我必须遵循从中初始化 ptree 的 XML 代码:

<Master Name='gamma'>
<Par1 Name='name1'>
<Value>0.</Value>
<Fix>1</Fix>
</Par1>
<Par2 Name='name2'>
<Value>0.</Value>
<Fix>1</Fix>
</Par2>
</Master>

我想将它的一部分传递给一个函数。基本上我想通过:

   <Par2 Name='name2'>
<Value>0.</Value>
<Fix>1</Fix>
</Par2>

函数可能如下所示:

 void processTree( which_type_do_I_put_here element ){
std::string n = element.get<std::string>("<xmlattr>.Name");
double val = element.get<double>("Value");
}

通常我可以使用 ptree::get_child("par2") 传递一个子树.这样做的缺点是函数无法访问 <xmlattr>。这个节点的。

我怎样才能通过树的这一部分访问 <xmlattr> ?提前感谢您的任何想法。

~彼得

最佳答案

类型是ptree

In general I could pass a subtree using ptree::get_child("par2").

确实。

This has the disadvantage that the function has no access to of this node

这是不对的:

Live On Coliru

#include <boost/property_tree/xml_parser.hpp>
#include <iostream>

std::string const sample = R"(
<Master Name='gamma'>
<Par1 Name='name1'>
<Value>0.</Value>
<Fix>1</Fix>
</Par1>
<Par2 Name='name2'>
<Value>0.</Value>
<Fix>1</Fix>
</Par2>
</Master>
)";

using boost::property_tree::ptree;

void processTree(ptree const& element) {
std::string n = element.get<std::string>("<xmlattr>.Name");

double val = element.get<double>("Value");
std::cout << __FUNCTION__ << ": n=" << n << " val=" << val << "\n";
}

int main() {
ptree pt;
{
std::istringstream iss(sample);
read_xml(iss, pt);
}

processTree(pt.get_child("Master.Par2"));
}

打印:

processTree: n=name2 val=0

关于c++ - boost::property_tree 传递包含 <xmlattr> 的子树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42446716/

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