首页 > 解决方案 > 不能在 RapidJSON 函数调用中使用 std::string 变量

问题描述

我是 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());
    }

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

在此处输入图像描述

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

标签: c++c++17rapidjson

解决方案


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

#define RAPIDJSON_HAS_STDSTRING 1

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

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

推荐阅读