Как добавить rapidjson :: Document в файл

мне нужно проанализировать файл, получить некоторые данные и записать их в другой файл, используя RapidJson.

Написано, что я могу восстановить ценности и поместить их в документ. Моя единственная проблема — вставить

этот документ в файле:

FILE * pFile = fopen ("read.json" , "r");

FILE * wFile = fopen ("Test.json" , "w");

if (pFile!=NULL)
{

rapidjson::FileStream is(pFile);
rapidjson::Document document;
document.ParseStream<0>(is);
string mMeshID = a.GetString();
//how to add that document to wfile
fclose (pFile);

}

Есть ли способ записать RapidJson :: Document в файл?

единственный способ, которым я основал это:

       //Convert JSON document to string
GenericStringBuffer< UTF8<> > buffer;
Writer<GenericStringBuffer< UTF8<> > > writer(buffer);
doc.Accept(writer);
const char* str = buffer.GetString();
fprintf(wFile, "%s", str);
fclose(wFile);

1

Решение

Есть лучшая документация о FileWriteStream после того, как этот вопрос был задан.

С помощью FileWriteStream вместо StringBuffer может уменьшить использование памяти. FileWriteStream использует фиксированный размер буфера (может храниться в стеке), в то время как StringBuffer Необходимо хранить весь JSON в (куче) памяти. Это становится большой разницей для большого JSON.

1

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

Вы лучше использовать

fwrite (buffer.GetString(), buffer.GetSize(), 1, wFile);

это безопаснее (в случае, если буфер не заканчивается нулем) и быстрее (без strlen).
Помимо этого и отсутствия проверки ошибок в вашем коде, все в порядке и должно записать JSON в файл NP.

0

По вопросам рекламы [email protected]