Другие ответы не идеальны, поскольку при использовании istringstream
копируется весь буфер без необходимости.
В качестве ответа на этот вопрос предполагает, что вы можете использовать устаревший istrstream
, но поскольку это генерирует предупреждения и может быть удалено в будущем, лучшим решением будет использование boost :: iostreams :
boost::iostreams::stream<boost::iostreams::array_source> stream(moo.c_str(), moo.size());
boost::property_tree::read_json(stream, tree);
Это позволяет избежать ненужного копирования буфера таким же образом istrstream
сделал (что может быть серьезной проблемой, если ваш входной буфер большой), и избавляет вас от необходимости писать собственный класс потока.