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

Cannot use std::string variable in RapidJSON function call

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

void setKeyValue() {
        Value obj(kObjectType);
        Value key("key");
        Value val(42);;
        obj.AddMember(key, val, d.GetAllocator());
    }

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

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

Value key(myKey) 中的 myKey 在 Visual Studio 中得到一个红色的卷曲下划线:

是什么原因造成的,我该如何解决?

JSON 您正在使用的库似乎不适用于标准库中的字符串对象,但它适用于 const char*。

因此您必须使用方法 c_str():

将字符串对象转换为 char*
void setKeyValue(string myKey) {
        Value obj(kObjectType);
        Value key((char*)myKey.c_str());
        Value val(42);;
        obj.AddMember(key, val, d.GetAllocator());
    }

您默认不支持 std::string。 rapidJSON 要求您 specify 您想要 std::string 支持。

#define RAPIDJSON_HAS_STDSTRING 1

只有这样constructor你使用的才有效:

GenericValue (const std::basic_string< Ch > &s, Allocator &allocator)