Я пытаюсь использовать rapidjson для вывода себя в строку для сохранения в базе данных, используя следующий код:
StringBuffer buffer;
Writer<FileStream> writer(buffer);
rest.Accept(writer);
string reststring = buffer.GetString();
где отдых — это спиджсон :: Документ.
Однако я получаю следующую ошибку:
no matching function for call to ‘rapidjson::Writer<rapidjson::FileStream>::Writer (rapidjson::StringBuffer&)’.
что странно, потому что автор rapidjson рекомендовал этот метод в ответ на предыдущий вопрос SO.
Должно быть, я устал в 9 часов прошлой ночью, когда писал этот кусок кода.
изменения
Writer<FileStream> writer(buffer);
в
Writer<StringBuffer> writer(buffer);
решает проблему.
Попробуй использовать rapidjson::StringBuffer
а также rapidjson::Writer
для получения строки вывода.
rapidjson::StringBuffer buffer;
rapidjson::Writer<rapidjson::StringBuffer> writer(buffer);
rest.Accept(writer);
std::string str = buffer.GetString();
Здесь вы можете получить значение в обоих string
так же как std::string
,
Выше я использовал std::string
для получения значения.
Это работает…
Как предполагает ваш компилятор, вы должны изменить свой код в:
StringBuffer buffer;
Writer<FileStream> writer(&buffer);
Или же:
StringBuffer* buffer;
Writer<FileStream> writer(buffer);