С++ boost разворачивает динамически генерируемую строку json (а не файл)

Я пытаюсь сделать минимальный пример чтения строки json, которая передается в качестве командной строки arg с boost. Я очень новичок в С++ и повышаю.

Мой код:

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 *, а не файла?

Спасибо

Ответы

Ответ 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