这应该很简单(我只是在学习boost,所以我遗漏了一些东西)
我已经使用json_read读入了一些简单的JSON,现在有了一个ptree。web上的所有示例都显示了使用ptree.get("entry_name")来获取条目。我想要做的就是:
ptree pt;
read_json(ss,pt);
BOOST_FOREACH(ptree::value_type &v, pt)
{
std::cout << v.{entry_name} << v.{value}
}例如,循环遍历ptree并写出每个名称(即您放入pt.get()中的内容)和它的相应值。
如果这很简单,我很抱歉
罗斯
发布于 2012-05-23 22:35:54
我在搜索同样的东西,但在任何地方都找不到答案。事实证明,这确实非常简单:
ptree pt;
/* load/fill pt */
for(iterator iter = pt.begin(); iter != pt.end(); iter++)
{
std::cout << iter->first << "," << iter->second.data() << std::endl;
}iter->first是条目名称,iter->second.data()是第一级的条目值。(然后可以使用iter->second.begin()/end()重新迭代以获取更深层次的信息。)
此外,如果在这个迭代中有一个这样的节点不是终端节点,并且本身是ptree,那么您可以从这个迭代器本身获得ptree:ptree subPt = iter->second.get_child("nodeName");
发布于 2011-07-18 23:30:48
我在使用ptree时也遇到了问题,但这可能会有所帮助:查看boost's ptree quick tutorial
诉{entry_name}
将会是
v.first
和
v.{value}
v.second.data()
这样行得通吗?
发布于 2012-11-05 17:38:29
下面是一个很好的例子,演示了如何使用BOOST_FOREACH http://akrzemi1.wordpress.com/2011/07/13/parsing-xml-with-boost/迭代ptree
要使用普通的"get“函数进行直接访问,请查看boost:http://www.boost.org/doc/libs/1_51_0/doc/html/boost_propertytree/tutorial.html中的示例
文档页面位于这里:http://www.boost.org/doc/libs/1_51_0/doc/html/boost/property_tree/basic_ptree.html我知道它没有很好的文档记录,但它是有帮助的。
https://stackoverflow.com/questions/5664705
复制相似问题