С++ 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