无法在 RapidJSON 函数调用中使用 std::string 变量

Ruu*_*oef 2 c++ rapidjson c++17

我是 C++ 新手,遇到了一个问题。我正在使用 rapidJSON 创建 JSON 文档。

void setKeyValue() {
        Value obj(kObjectType);
        Value key("key");
        Value val(42);;
        obj.AddMember(key, val, d.GetAllocator());
    }
Run Code Online (Sandbox Code Playgroud)

按预期工作。但是当我尝试替换对 key 的调用以使其使用传入的参数时,如下所示:

void setKeyValue(string myKey) {
        Value obj(kObjectType);
        Value key(myKey);
        Value val(42);;
        obj.AddMember(key, val, d.GetAllocator());
    }
Run Code Online (Sandbox Code Playgroud)

Visual Studio 中的myKey 会Value key(myKey)出现一个红色卷曲的下标,内容如下:

在此输入图像描述

造成这种情况的原因是什么以及如何解决?

acr*_*075 5

默认情况下,您不会获得支持std::string。rapidJSON 要求您指定您想要的std::string支持。

#define RAPIDJSON_HAS_STDSTRING 1
Run Code Online (Sandbox Code Playgroud)

只有这样,您使用的构造函数才有效:

GenericValue (const std::basic_string< Ch > &s, Allocator &allocator)
Run Code Online (Sandbox Code Playgroud)