我需要解析一个文件,获取一些数据并使用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);
答案 0 :(得分:1)
在提出此问题之后,有关FileWriteStream
的更好文档。
使用FileWriteStream
代替StringBuffer
可以减少内存使用量。 FileWriteStream
使用固定大小的缓冲区(可以存储在堆栈中),而StringBuffer
需要将整个JSON存储在(堆)内存中。它对于大JSON来说是一个很大的不同。
答案 1 :(得分:0)
你最好使用
fwrite (buffer.GetString(), buffer.GetSize(), 1, wFile);
它更安全(如果缓冲区不是以空值终止的)并且更快(没有strlen) 除此之外,你的代码中没有错误检查,这很好,应该将JSON写入文件NP。