准备C ++ Json请求

时间:2019-07-11 06:15:28

标签: c++ json string c++14

我正在尝试使用c ++准备json请求。像这样:

string key = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";

std::string data = "{\n"
"    \"foo\": key\n"
"}";

当我打印时,它显示为:

"foo": key

但是我需要这样:

"foo": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"

所以,请有人帮助我。这该怎么做?预先感谢。

4 个答案:

答案 0 :(得分:3)

C ++不会在字符串常量中扩展变量,因此,如果在这样的字符串中包含“ key”,它将被解释为字符串“ key”,而不是被扩展为变量。

您要做的是将变量“ key”的内容与字符串的其余部分连接在一起。在C ++中,您可以使用串联运算符“ +”来完成此操作。

因此,您将需要以下内容:

std::string data = "{\n"
"    \"foo\": " + key + "\n"
"}"

答案 1 :(得分:2)

您不能期望将字符串key替换为变量key的值。尽管某些语言支持字符串插值,但据我所知c++不支持。您可以通过串联key之前的字符串,keykey之后的字符串来创建json字符串

std::string data = "{\n \"foo\": " + key + "\n}";

答案 2 :(得分:1)

  std::string key = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
  std::string data = "{\n"
  "    \"foo\": ";
  data += key;
  data += "\n"
  "}";

答案 3 :(得分:1)

您可以肯定地采取其他建议:

std::string data = "{\n\"foo\":" + key + "\n}";

但是您可以使用(我会建议您)一个名为nlohmann :: json的不错的库

然后做:

nlohmann::json j;
std::string k{"123-ABC"};
j["foo"] = k;
std::cout << j.dump();
//prints {"foo":"123-ABC"}
std::cout << j.dump(2);
//prints:
//    {
//      "foo": "123-ABC"
//    }