RapidJSON如何使用字符串变量查询对象

时间:2017-11-09 00:11:35

标签: c++ json rapidjson

当我尝试使用字符串变量查询对象时遇到错误,但是当我直接使用字符串时却没有。

JSON: {"x": "hello"}

这有效:

std::cout << document["x"].GetString();

这不起作用:

std::string s = "x";
std::cout << document[s].GetString();

我收到了这个错误:

error: no viable overloaded operator[] for type 'rapidjson::Document'
  (aka 'GenericDocument<UTF8<> >')
std::cout << document[s].GetString();
                ~~~~~^~
note: candidate function not viable: no known conversion from 'std::string'
  (aka 'basic_string<char, char_traits<char>, allocator<char> >') to 'SizeType' 
(aka 'unsigned int') for 1st argument

我做错了什么?

1 个答案:

答案 0 :(得分:-1)

尝试

std::cout << document[s.c_str()].GetString();

似乎运算符没有为std :: string而是为C-string重载。

c_str成员函数的参考)