Rapidjson вывод на строку не работает

Я пытаюсь использовать 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.

2

Решение

Должно быть, я устал в 9 часов прошлой ночью, когда писал этот кусок кода.

изменения

Writer<FileStream> writer(buffer);

в

Writer<StringBuffer> writer(buffer);

решает проблему.

6

Другие решения

Попробуй использовать 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 для получения значения.
Это работает…

4

Как предполагает ваш компилятор, вы должны изменить свой код в:

 StringBuffer buffer;
Writer<FileStream> writer(&buffer);

Или же:

 StringBuffer* buffer;
Writer<FileStream> writer(buffer);
0
По вопросам рекламы [email protected]