Boost Json写错误:没有匹配的函数来调用'boost :: property_tree :: basic_ptree <std :: __ cxx11

时间:2018-08-02 13:55:47

标签: c++ json boost boost-propertytree

=“”

使用Boost库将Json数据写入字符串,但我面临编译错误:

error: no matching function for call to ‘boost::property_tree::basic_ptree<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> >::push_back(std::pair<const char*, const char*>)

我的c ++代码是

#include <fstream>
#include <iostream>

#include <boost/property_tree/ptree.hpp>
#include <boost/property_tree/json_parser.hpp>

namespace pt = boost::property_tree;

int main()
{
  std::string enc = "Enoded data";

    pt::ptree root;
    pt::write_json(std::cout, root);

    pt::ptree image_node;
    image_node.push_back(std::make_pair("content", enc));
    root.add_child("image", image_node);

    pt::ptree features_node;
    features_node.push_back(std::make_pair("type", "LABEL_DETECTION"));
    features_node.push_back(std::make_pair("maxResults", 1)); 
    root.add_child("features", features_node);
    pt::write_json(std::cout, root);
    return 0;
}

1 个答案:

答案 0 :(得分:1)

boost::property_tree::ptree::push_backboost::property_tree::ptree::value_type作为参数,与std::pair<const char*, const char*>不同。因此,您需要例如。 :

features_node.push_back(pt::ptree::value_type("type", pt::ptree("LABEL_DETECTION")));

或者更好,只需使用boost::property_tree::ptree::put即可:

pt::ptree root;

root.put("image.content", enc);
root.put("features.type", "LABEL_DETECTION");
root.put("features.maxResults", 1);

pt::write_json(std::cout, root);