Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/137.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 这个boost ptree块可以更短(更智能)吗?_C++_Boost_Ptree - Fatal编程技术网

C++ 这个boost ptree块可以更短(更智能)吗?

C++ 这个boost ptree块可以更短(更智能)吗?,c++,boost,ptree,C++,Boost,Ptree,我正在利用boostptree库创建一个JSON字符串,但我发现只需执行以下操作就很乏味了。我需要向metrics ptree添加一个简单的数组,如metric.name:[a,B]。我能做得更好吗?或者至少用更干净的方式写 pt::ptree公制_平均值; 公制平均投入,9999; pt::ptree公制标准; 公制标准输出,0; pt::ptree公制分布; 度量分布向后推{,度量平均值}; 度量分布推回{,度量标准}; metrics.add\u childmetric.name,metr

我正在利用boostptree库创建一个JSON字符串,但我发现只需执行以下操作就很乏味了。我需要向metrics ptree添加一个简单的数组,如metric.name:[a,B]。我能做得更好吗?或者至少用更干净的方式写

pt::ptree公制_平均值; 公制平均投入,9999; pt::ptree公制标准; 公制标准输出,0; pt::ptree公制分布; 度量分布向后推{,度量平均值}; 度量分布推回{,度量标准}; metrics.add\u childmetric.name,metric\u distr;
我会写一些辅助函数

template<typename T>
pt::ptree scalar(const T & value)
{
    pt::ptree tree;
    tree.put("", value);
    return tree;
}

template<typename T>
pt::ptree array(std::initialiser_list<T> container)
{
    pt::ptree tree;
    for (auto & v : container)
    { 
        tree.push_back(scalar(v));
    }
    return tree;
}

我会写一些辅助函数

template<typename T>
pt::ptree scalar(const T & value)
{
    pt::ptree tree;
    tree.put("", value);
    return tree;
}

template<typename T>
pt::ptree array(std::initialiser_list<T> container)
{
    pt::ptree tree;
    for (auto & v : container)
    { 
        tree.push_back(scalar(v));
    }
    return tree;
}
我想:

甚至

所有这些都是印刷品

{
    "metric name": [
        "9999",
        "0"
    ]
}
另见

我想:

甚至

所有这些都是印刷品

{
    "metric name": [
        "9999",
        "0"
    ]
}

另请参见

您最好使用json库,ptree很方便,但是如果您想要特定的json输出,您会遇到限制您对此有什么建议吗?我在这个项目中大量使用ptree,json格式只出现了2/3次,所以我宁愿坚持使用ptree,只要我能做我需要做的事情。非常容易使用,并提供了一些很好的语法。您最好使用json库,ptree很方便,但是如果您想要特定的json输出,您会遇到一些限制。您对此有什么建议吗?我在这个项目中大量使用ptree,json格式只出现了2/3次,所以我宁愿坚持使用ptree,只要我能做我需要做的事情。它非常容易使用,并提供了一些很好的语法是的,这可能是我坚持使用ptree的最好的方法。谢谢。是的,这可能是我和ptree一起拍的最好的一张照片。谢谢。我发现@Caleth answer更为通用和灵活,我最终编写了自己的模板函数,但你的模板函数直接达到了我最初寻找的目的,所以无论如何,谢谢。哦,是的,我之前对@Caleth的答案加了1分。很好!我发现@Caleth answer更为通用和灵活,我最终编写了自己的模板函数,但你的模板函数直接达到了我最初寻找的目的,所以无论如何,谢谢你。哦,是的,我以前曾+1'ed@Caleth的答案。很好!
for (auto el : {9999, 0})
    arr.push_back({"", ptree(std::to_string(el))});
{
    "metric name": [
        "9999",
        "0"
    ]
}