【问题标题】:How can I use GetString() on a user inputted string?(RapidJson)如何在用户输入的字符串上使用 GetString()?(RapidJson)
【发布时间】:2018-04-12 02:36:00
【问题描述】:

我只想让用户输入一个作为特定对象名称的字符串,然后让 GetString() 返回它的字符串。这是我正在使用的 JSON 文件的一部分...

"Rogue Refiner": {
  "name": "Rogue Refiner",
  "power": "3",
  "toughness": "2"
},

这就是我返回我想要的特定值的方式...

Document d;
d.Parse(data.c_str());
d["Rogue Refiner"]["name"].GetString());

我希望能够让用户在命令提示符中输入一个字符串,因为 JSON 文件有数千个对象,例如“Rogue Refiner”。我认为这会起作用......

Document d;
d.Parse(data.c_str());

std::string stringName;
std::cin >> stringName;
d[stringName]["name"].GetString());

但它不会工作。错误说“没有运算符“[]”与这些操作数匹配”。因此,如果有人知道我如何让用户输入他们想要查找的对象的名称,那就太好了。

【问题讨论】:

    标签: c++ json rapidjson


    【解决方案1】:

    operator[]Document 采用 const char *。请改用d[stringName.c_str()]["name"].GetString());

    【讨论】:

    • 所以当我执行 string stringName = "Rogue Refiner";它访问 JSON 文件并提取所有值。但是,当我尝试使用 cin 输入 Rogue Refiner 时,它会在 document.h 的第 1137 行引发异常。你知道它为什么会这样吗?
    • 如果没有上下文和/或代码,我建议您打开另一个问题。
    • 我实际上在这里找到了另一篇文章,说要使用 getline 函数并且效果很好。非常感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 2012-09-12
    • 1970-01-01
    • 2017-03-31
    • 1970-01-01
    • 1970-01-01
    • 2022-08-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多