我正在尝试使用C++准备JSON请求,就像这样:
string key = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
std::string data = "{\n"
" \"foo\": key\n"
"}";
当我打印这个时,它会显示为:
。
"foo": key
但我需要的是这样的:
但我需要像这样:
"foo": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
所以,请有人帮助我。怎样做呢?提前致谢。
C++在字符串常量内不会展开变量,因此如果字符串中有 "key" ,它将仅被解释为字符串 "key" 而不是被扩展为变量。
你想做的是将变量 "key" 的内容与其余部分连接起来。在C ++中,你可以使用连接运算符 "+" 来实现这一点。
因此,你需要像下面这样进行操作:
std::string data = "{\n"
" \"foo\": " + key + "\n"
"}"
key
被变量key
的值替换。虽然有些语言支持字符串插值,但据我所知,c++
不支持。你可以通过将key
之前的字符串、key
和key
之后的字符串连接起来来创建json字符串。"最初的回答"std::string data = "{\n \"foo\": " + key + "\n}";
std::string key = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
std::string data = "{\n"
" \"foo\": ";
data += key;
data += "\n"
"}";
(保留HTML标记)
std::string data = "{\n\"foo\":" + key + "\n}";
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"
// }
+
运算符将内容附加到std::string
对象上。例如:std::string a = "a", b = "b", ab = a + b;
- Some programmer dude