次のように宣言されたrapidjson::Documentにデータを追加する次のコードがあります。
rapidjson::Document rest;
rest.SetObject();
ループで。
Value v(value.c_str());
stringstream ss;//create a stringstream
ss << "a" << colnum;
const char* colnumstr = ss.str().c_str();
cout << "json: colnumstr = \"" << colnumstr << "\", value = \"" << value << "\"" << endl;
rest.AddMember(colnumstr,v,rest.GetAllocator());
ループが終了したら、次のようにjsonを文字列としてマップに追加します。
StringBuffer buffer;
Writer<StringBuffer> writer(buffer);
rest.Accept(writer);
string reststring = buffer.GetString();
cout << "Pushing " << reststring << " to map" << endl;
parseddata["rest"].push_back(reststring);
ここに奇妙なビットがあります:
json: colnumstr = "a1", value = "13745438"
json: colnumstr = "a2", value = "#N/A"
json: colnumstr = "a9", value = "Top 19"
Pushing {"a1":"9999\u0000438","99":"#N/A","31":"Top 19"} to map
特定の値が変更されているようです。しかし、私にはその方法や理由がわかりません。