我正在尝试使用c ++准备json请求。像这样:
string key = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
std::string data = "{\n"
" \"foo\": key\n"
"}";
当我打印时,它显示为:
"foo": key
但是我需要这样:
"foo": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
所以,请有人帮助我。这该怎么做?预先感谢。
答案 0 :(得分:3)
C ++不会在字符串常量中扩展变量,因此,如果在这样的字符串中包含“ key”,它将被解释为字符串“ key”,而不是被扩展为变量。
您要做的是将变量“ key”的内容与字符串的其余部分连接在一起。在C ++中,您可以使用串联运算符“ +”来完成此操作。
因此,您将需要以下内容:
std::string data = "{\n"
" \"foo\": " + key + "\n"
"}"
答案 1 :(得分:2)
您不能期望将字符串key
替换为变量key
的值。尽管某些语言支持字符串插值,但据我所知c++
不支持。您可以通过串联key
之前的字符串,key
和key
之后的字符串来创建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"
// }