мне нужно проанализировать файл, получить некоторые данные и записать их в другой файл, используя 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);
Есть лучшая документация о FileWriteStream
после того, как этот вопрос был задан.
С помощью FileWriteStream
вместо StringBuffer
может уменьшить использование памяти. FileWriteStream
использует фиксированный размер буфера (может храниться в стеке), в то время как StringBuffer
Необходимо хранить весь JSON в (куче) памяти. Это становится большой разницей для большого JSON.
Вы лучше использовать
fwrite (buffer.GetString(), buffer.GetSize(), 1, wFile);
это безопаснее (в случае, если буфер не заканчивается нулем) и быстрее (без strlen).
Помимо этого и отсутствия проверки ошибок в вашем коде, все в порядке и должно записать JSON в файл NP.