9

Rapidjson を使用してファイルからドキュメントを読み取るための実用的な C++ コードが必要です: https://code.google.com/p/rapidjson/

ウィキではまだ文書化されておらず、サンプルは std::string からのみシリアル化解除されています。テンプレートについての深い知識はありません。

ドキュメントをテキスト ファイルにシリアライズしました。これは私が書いたコードですが、コンパイルされません。

#include "rapidjson/prettywriter.h" // for stringify JSON
#include "rapidjson/writer.h"   // for stringify JSON
#include "rapidjson/filestream.h"   // wrapper of C stream for prettywriter as output
[...]
std::ifstream myfile ("c:\\statdata.txt");
rapidjson::Document document;
document.ParseStream<0>(myfile);

コンパイル エラー状態: エラー: 'Document' は 'rapidjson' のメンバーではありません

私はQt 4.8.1をmingwとrapidjson v 0.1で使用しています(すでにアップグレードされたv 0.11で試しましたが、エラーは残ります)

4

3 に答える 3

16
#include <rapidjson/document.h>
#include <rapidjson/istreamwrapper.h>
#include <fstream>

using namespace rapidjson; 
using namespace std;

ifstream ifs("test.json");
IStreamWrapper isw(ifs);
Document d;
d.ParseStream(isw);

http://rapidjson.org/md_doc_stream.htmlのドキュメントをお読みください。

于 2016-09-19T04:16:19.770 に答える
6

かなり似たような問題が発生した後、この質問を見つけました。解決策は、rapidjson 独自の FileStream オブジェクトと一緒に ifstream ではなく、FILE* オブジェクトを使用することです (既に正しいヘッダーが含まれています)。

FILE * pFile = fopen ("test.json" , "r");
rapidjson::FileStream is(pFile);
rapidjson::Document document;
document.ParseStream<0>(is);

もちろん、 document.h インクルードを追加する必要があります(これは直接の質問に答えますが、間違ったファイルストリームを使用しているため、問題は解決しません):

#include "rapidjson/document.h"

次に、ドキュメント オブジェクトにファイルの内容が入力されます (追加するのはかなり早いかもしれません)。それが役に立てば幸い!

于 2013-08-28T13:58:17.813 に答える