gpt4 book ai didi

c++ - 使用 rapidjson 处理整数数组

转载 作者:行者123 更新时间:2023-11-28 02:06:04 25 4
gpt4 key购买 nike

寻找rapidjson documentation建议使用此代码查询数组:

for (Value::ConstValueIterator itr = a.Begin(); itr != a.End(); ++itr)
printf("%d ", itr->GetInt());

但是,我有一个数组数组,类似于:

[ [0,2], [1,2], [4, 5], ... ]

我想有一些两级来处理它,像这样:

for (Value::ConstValueIterator itr = a.Begin(); itr != a.End(); ++itr)
for (Value::ConstValueIterator itr2 = itr->GetArray().Begin(); itr2 != itr->GetArray().End(); ++itr2)
printf("%d ", itr2->GetInt());

但是,itr 似乎没有任何 GetArray() 或返回一个对象的等价方法,在该对象中获取第二个(内部)迭代器。

注意:我找到了这个 Q&A post , 但它似乎是基于 gettinig 表示内部数组的 Value 。但是,我不知道如何从 itr 迭代器中获取这样的值(例如 itr->value 不起作用)。

最佳答案

你可以这样解析数组的数组json:

#include <vector>
#include <rapidjson/document.h>

using namespace rapidjson;

int main(void)
{
std::vector<std::vector<int>> vec;
const char* json = "{ \"data\":[[0,1],[2,3]] }";

Document d;

d.Parse<0>(json);
Value& data = d["data"];
vec.resize(data.Size());

for (SizeType i = 0; i<data.Size(); i++)
{
const rapidjson::Value &data_vec = data[i];
for (SizeType j = 0; j < data_vec.Size(); j++)
vec[i].push_back(data_vec[j].GetInt());
}

return 0;
}

关于c++ - 使用 rapidjson 处理整数数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37443829/

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