Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
准备C++;Json请求 我试图用C++编写JSON请求。像这样: string key = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"; std::string data = "{\n" " \"foo\": key\n" "}";_C++_Json_String_C++14 - Fatal编程技术网

准备C++;Json请求 我试图用C++编写JSON请求。像这样: string key = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"; std::string data = "{\n" " \"foo\": key\n" "}";

准备C++;Json请求 我试图用C++编写JSON请求。像这样: string key = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"; std::string data = "{\n" " \"foo\": key\n" "}";,c++,json,string,c++14,C++,Json,String,C++14,当我打印时,它显示如下: "foo": key 但我需要这样: "foo": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" 所以,请有人帮帮我。如何做到这一点?提前感谢。C++不会在字符串常量中展开变量,因此如果在这样的字符串中有“key”,它将被解释为字符串“key”,而不是展开为变量 std::string key = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"; std::string data = "{\n"

当我打印时,它显示如下:

"foo": key
但我需要这样:

"foo": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"

所以,请有人帮帮我。如何做到这一点?提前感谢。

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

  std::string key = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
  std::string data = "{\n"
  "    \"foo\": ";
  data += key;
  data += "\n"
  "}";
您要做的是将变量“key”的内容与字符串的其余部分连接起来。在C++中,您可以用级联操作符“+”来完成这一点。

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

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

不能期望字符串
key
替换为变量
key
的值。虽然有些语言支持字符串插值,但据我所知,
c++
不支持。您可以通过连接
之前的字符串、
之后的字符串来创建json字符串

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

你肯定可以按照别人的建议去做:

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"
//    }
nlohmann::json j;
std::字符串k{“123-ABC”};
j[“foo”]=k;

STD::首先,为了帮助您解决问题,C++编译器将不解析字符串文字的内容,寻找变量或其他表达式。幸运的是,您可以使用普通的
+
操作符将其附加到
std::string
对象。例如
std::string a=“a”,b=“b”,ab=a+b