c++ 在rapidjason中创建成员时无法使用std::string

uxhixvfz  于 2023-02-26  发布在  其他
关注(0)|答案(1)|浏览(248)

我尝试了下面的代码-但得到一个编译错误

rapidjson::Document details;
  details.SetObject();
  std::string s = "kjfhgdkgjhfkjfhj";

  details.AddMember("farm", s, details.GetAllocator());

创建值为std::string的成员的正确方法是什么

nkoocmlb

nkoocmlb1#

为了允许rapidjson使用std::string,在程序的开头添加以下预处理器指令。

#define RAPIDJSON_HAS_STDSTRING 1

添加上面的行后,下面的程序对我来说工作正常。

#define RAPIDJSON_HAS_STDSTRING 1

#include<iostream>
#include<rapidjson/rapidjson.h>
#include<rapidjson/document.h>
#include<rapidjson/filewritestream.h>
#include<rapidjson/prettywriter.h>
#include<string>

void writeJSON();

int main() {
    

    writeJSON();
    getchar();
    return 0;
}

void writeJSON() {
    rapidjson::Document doc;
    doc.SetObject();

    std::string s = "kjfhgdkgjhfkjfhj";

    doc.AddMember("farm", s, doc.GetAllocator());

    FILE* fp;
    errno_t err = fopen_s(&fp, "data.json", "wb");

    char writeBuffer[65536];
    rapidjson::FileWriteStream os(fp, writeBuffer, sizeof(writeBuffer));

    rapidjson::PrettyWriter<rapidjson::FileWriteStream> writer(os);
    doc.Accept(writer);

    fclose(fp);

    std::cout << "JSON data written to data.json file" << std::endl;

}

相关问题