无法在 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)
我是 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)