C++ boost解析动态生成的json字符串(不是文件)

Posted

技术标签:

【中文标题】C++ boost解析动态生成的json字符串(不是文件)【英文标题】:C++ boost parse dynamically generated json string (not a file) 【发布时间】:2014-02-03 20:59:48 【问题描述】:

我正在尝试做一个读取 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\" "

但我收到“无法打开文件错误”。如何提高读取 std::string 或 char* 而不是文件的速度?

谢谢

【问题讨论】:

见这个:***.com/questions/12542399/…。 read_json 需要一个流,你给它一个字符串。 【参考方案1】:

您可以将字符读入字符串流,然后将其传递给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

【讨论】:

以上是关于C++ boost解析动态生成的json字符串(不是文件)的主要内容,如果未能解决你的问题,请参考以下文章

使用 C++ 中的函数动态创建 json 字符串

C++使用boost 1.75版本来读写JSON文件

C++ Boost 1.66 使用 Beast http request Parser 来解析字符串

调用 Boost JSON 解析器永远不会返回

char多少字节influxdb

请用c++中的boost编一个动态库