Nomango/configor

emm关于wrap?

Closed this issue · 6 comments

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)作用是啥啊)

还有json.get<json::array_type>()前几次编译报错说没有匹配的重载函数,后来编译又通过了(没改东西)

@AbrasiveBoar902 json::wrap是个static函数,没有 j.wrap(xx) 的用法,只能 json::wrap(xx)
看你的例子其实不需要wrap,直接Ver = arr[i]就可以了。wrap的作用你可以理解为把json格式的stream内容映射到结构体中(或反过来),看看与自定义类型转换这块文档

比如这段代码

std::ifstream file("config.json");
json j;
file >> j;

MyConfig c = j;

可以简写为

std::ifstream file("config.json");
MyConfig c;
file >> json::wrap(c);

@AbrasiveBoar902 json::wrap是个static函数,没有 j.wrap(xx) 的用法,只能 json::wrap(xx)
看你的例子其实不需要wrap,直接Ver = arr[i]就可以了。wrap的作用你可以理解为把json格式的stream内容映射到结构体中(或反过来),看看与自定义类型转换这块文档
谢谢

从空文件中读取会发生异常

@AbrasiveBoar902 当然,空文件不是合法的json