C++ 卡萨布兰卡:将变量分配给JSON表值

C++ 卡萨布兰卡:将变量分配给JSON表值,c++,json,casablanca,C++,Json,Casablanca,这可能是一个简单的问题,但我不知道答案。我试过用谷歌搜索,但我不知道该用谷歌搜索什么。我需要给JSON表值分配一个变量(用户名字符串到用户名表值)。我在MSDN上看到了这样一个示例: obj2[L"password"] = json::value::string(U("password")); 但是,如果我删除引号并输入变量名,它就会出错。我觉得这和“U”有关。然而,我真的不知道“U”叫什么(迭代器?),也不知道如何更改它。你能帮我一下吗?经过一些探索和创造性的问题解决,我终于找到了这个问题

这可能是一个简单的问题,但我不知道答案。我试过用谷歌搜索,但我不知道该用谷歌搜索什么。我需要给JSON表值分配一个变量(用户名字符串到用户名表值)。我在MSDN上看到了这样一个示例:

 obj2[L"password"] = json::value::string(U("password"));

但是,如果我删除引号并输入变量名,它就会出错。我觉得这和“U”有关。然而,我真的不知道“U”叫什么(迭代器?),也不知道如何更改它。你能帮我一下吗?

经过一些探索和创造性的问题解决,我终于找到了这个问题的解决方案。关于这个问题的文档很少,但是,我确实确定U被称为宏——在卡萨布兰卡,它(几乎)将任何类型的字符串转换为“utility::string_t”形式。它确实做到了这一点,不接受变量

为了解决这个问题,我刚刚声明“密码”和“用户名”为:

 utility::string_t password
 utility::string_t username

然后像平常一样和他们一起工作。希望这能帮助有同样问题的人解决问题

我和你有同样的问题。我尝试了你的解决方案,但我无法实现:

utility::string_t text = "value1"; //no suitable constructor exists from     const char to basic string
因此,在寻找其他方法时,我发现这同样有效:

auto text = U("value1");
在这之后,作业也会起作用:

answer[L"key1"] = web::json::value::string(text);