emm关于wrap?
Closed this issue · 6 comments
AbrasiveBoar902 commented
auto arr = se.get<json::array_type>(); for (unsigned int i = 0; i < arr.size(); i++) { getversion Ver; stringstream ss; ss << arr[i]; ss >> json::wrap(Ver); }
这样可以正常获取arr[i]中的内容并写入Ver,但是
getversion Ver; arr[i].wrap(Ver);
这样获取不到任何内容
所以arr[i].wrap(Ver)作用是啥啊)
AbrasiveBoar902 commented
还有json.get<json::array_type>()
前几次编译报错说没有匹配的重载函数,后来编译又通过了(没改东西)
Nomango commented
@AbrasiveBoar902 json::wrap是个static函数,没有 j.wrap(xx)
的用法,只能 json::wrap(xx)
看你的例子其实不需要wrap,直接Ver = arr[i]
就可以了。wrap的作用你可以理解为把json格式的stream内容映射到结构体中(或反过来),看看与自定义类型转换这块文档
Nomango commented
比如这段代码
std::ifstream file("config.json");
json j;
file >> j;
MyConfig c = j;
可以简写为
std::ifstream file("config.json");
MyConfig c;
file >> json::wrap(c);
AbrasiveBoar902 commented
@AbrasiveBoar902 json::wrap是个static函数,没有
j.wrap(xx)
的用法,只能json::wrap(xx)
看你的例子其实不需要wrap,直接Ver = arr[i]
就可以了。wrap的作用你可以理解为把json格式的stream内容映射到结构体中(或反过来),看看与自定义类型转换这块文档
谢谢
AbrasiveBoar902 commented
从空文件中读取会发生异常
Nomango commented
@AbrasiveBoar902 当然,空文件不是合法的json