我正在尝试创建一个读取json字符串的最小示例,该字符串作为带有boost的命令行arg传递。我对C ++很陌生并且提升。
我的代码是:
int main (int argc, char ** argv)
{
boost::property_tree::ptree pt;
boost::property_tree::read_json(argv[1], pt);
cout << pt.get<std::string>("foo");
}
我称之为
./myprog "{ \"foo\" : \"bar\" }"
但是我得到了一个无法打开文件的错误&#39;。如何获得读取std :: string或char *而不是文件的提升?
由于
答案 0 :(得分:31)
您可以做的是将字符读入字符串流,然后将其传递给read_json
。
#include <sstream>
#include <iostream>
#include <boost/property_tree/json_parser.hpp>
int main (int argc, char ** argv)
{
std::stringstream ss;
ss << argv[1];
boost::property_tree::ptree pt;
boost::property_tree::read_json(ss, pt);
std::cout << pt.get<std::string>("foo") << std::endl;
}
输出
bar