boost ptree动态修改值数组

时间:2015-05-22 21:18:03

标签: c++ json boost boost-propertytree

我开始使用boost中的ptree和json解析器来保存一些快速信息。 问题是我只需要保存一些URI,所以我不在乎密钥。 现在我想找到一个值并将其删除。 我怎么能这样做

{
    "MyArray":
     [
              "value1",
              "value2"
     ]
}

我无法使用find()并且迭代器似乎无法正常工作。

for (it ; it != myptree.end();  ++it)
    if ((*it).second.data.compare(strValueImSearching) != 0)
    // the previous line is not valid from .data
         myptree.erase(it);

1 个答案:

答案 0 :(得分:0)

阿。灯泡时刻。

你不能迭代那样改变的集合,因为erase调用使当前的迭代器失效。

  

请参阅此处了解迭代器失效规则:Iterator invalidation rules

相反,确实使用稳定的迭代器:

while (it != myptree.end()) {
     if ((*it).second.data.compare(strValueImSearching) != 0)
         it = myptree.erase(it);
     else
         ++it;
}