4

オブジェクトタイプのドキュメントにいくつかのメンバーを追加するこのコードがあります

void test01(rapidjson::Document& doc)
{
    doc.AddMember("test01", 123, doc.GetAllocator());
    char name[] = "test02";
    doc.AddMember(name, 2, doc.GetAllocator());
    string sname = "test03";
    doc.AddMember(sname.c_str(), 3, doc.GetAllocator());
}

そしてこの作品を連載する

rapidjson::StringBuffer buffer;
rapidjson::PrettyWriter<rapidjson::StringBuffer> writer (buffer);
document.Accept (writer);
std::string json = buffer.GetString();

しかし、得られた値は

{
    "test01": 123,
    "ÌÌÌÌÌÌ": 2,
    "ÌÌÌÌÌÌ": 3
}

誰かが理由を知っていますか?

4

3 に答える 3

2

addmember 関数のメンバー名として可変文字列が必要な場合は、次のようにします。

    char buff[50];
    sprintf(buff, "%d", somefacyNumber);

    Value vMemberName  (kStringType);
    vMemberName.SetString(buff, strlen(buff), nalloc);     // for buffs we must do this, 
       // if we use stringref, then next next time we add a buffer we stamp on previous value


    someObject.AddMember(vMemberName, vSomeOtherValue, nalloc); // nalloc is our allocator
于 2015-01-14T20:09:14.823 に答える