【发布时间】:2020-03-16 04:32:49
【问题描述】:
我是 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 中得到一个红色的下划线,说明如下:
这是什么原因造成的,我该如何解决?
【问题讨论】:
-
您是否检查过
Value的构造函数是否采用std::string?"key"不是std::string,以免引起您的困惑 -
试试:
mykey.c_str() -
@foreknownas_463035818 我想这让我很困惑。在这种情况下,字符数组会是什么?
-
如果你这样做有效果吗?
#define RAPIDJSON_HAS_STDSTRING 1。请参阅此处了解您正在使用的docs of the constructor。 -
@RuudVerhoef 字符串文字(不是
std::string,请注意,这只是 STL 的库类型,即它没有被特殊处理)。