boost:只需迭代ptree的元素

Ros*_*s W 9 loops boost-propertytree

这应该很简单(我只是学习提升,所以我错过了一些东西)

我已经使用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}
 }
Run Code Online (Sandbox Code Playgroud)

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

对不起,如果这很简单

罗斯

mr_*_*org 16

我正在寻找同样的事情,无法在任何地方找到答案.事实证明它非常简单:

ptree pt;
/* load/fill pt */
for(iterator iter = pt.begin(); iter != pt.end(); iter++)
{
  std::cout << iter->first << "," << iter->second.data() << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

iter-> first是条目名称,iter-> second.data()是第一级的条目值.(然后您可以使用iter-> second.begin()/ end()重新迭代更深层次.)

此外,如果此迭代中的一个此类节点不是终端节点并且本身是ptree,则可以从此迭代器本身将其作为ptree:ptree subPt = iter-> second.get_child("nodeName");

感谢为我提供了理解它的方向,ptree现在看起来非常直观,就像其他C++ stl函数一样.


Sam*_*Sam 2

我在 ptree 方面也遇到了麻烦,但这也许可以帮助:查看boost 的 ptree 快速教程

v.{entry_name}
将是
v.first

v.{value}
v.second.data()

那行得通吗?