首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >boost :只需迭代ptree的元素

boost :只需迭代ptree的元素
EN

Stack Overflow用户
提问于 2011-04-14 22:24:07
回答 5查看 15.9K关注 0票数 9

这应该很简单(我只是在学习boost,所以我遗漏了一些东西)

我已经使用json_read读入了一些简单的JSON,现在有了一个ptree。web上的所有示例都显示了使用ptree.get("entry_name")来获取条目。我想要做的就是:

代码语言:javascript
复制
 ptree pt;
 read_json(ss,pt);

 BOOST_FOREACH(ptree::value_type &v, pt)
 {
   std::cout << v.{entry_name} << v.{value}
 }

例如,循环遍历ptree并写出每个名称(即您放入pt.get()中的内容)和它的相应值。

如果这很简单,我很抱歉

罗斯

EN

回答 5

Stack Overflow用户

发布于 2012-05-23 22:35:54

我在搜索同样的东西,但在任何地方都找不到答案。事实证明,这确实非常简单:

代码语言:javascript
复制
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");

票数 17
EN

Stack Overflow用户

发布于 2011-07-18 23:30:48

我在使用ptree时也遇到了问题,但这可能会有所帮助:查看boost's ptree quick tutorial

诉{entry_name}

将会是

v.first

v.{value}

v.second.data()

这样行得通吗?

票数 2
EN

Stack Overflow用户

发布于 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我知道它没有很好的文档记录,但它是有帮助的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5664705

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档