作者Killercat (杀人猫™)
看板C_and_CPP
标题Re: [讨论] boost::variant有没有更好的做法?
时间Wed Sep 6 13:43:29 2017
自己回自己,之前原来是自己在CMakefile搞了一个大乌龙
所以本来该working的code被误以为会吐出一狗票错误
顺便写一下这篇来感叹boost 赞叹boost一下,这真的还挺神奇的
Code都很短也可验证 所以就不特地贴gist了
前提 :
typedef boost::variant<std::string, double, int> ValueType;
std::map<std::string, ValueType> map;
map里面塞进一些资料
map.insert(std::make_pair("StringValue", "this is string!"));
map.insert(std::make_pair("intValue", 12345));
对map做serialize
std::ofstream ofs(folder);
boost::archive::text_oarchive ar(ofs);
ar << map;
ofs.close();
对map做deserialize
std::map<std::string, ValueType> map2;
std::ifstream ifs(folder);
boost::archive::text_iarchive ar(ifs);
ar >> map2;
ifs.close();
这样就可以了,也就是说,其实他基本上可以直接吃内含variant的map不会出错
之前出错是因为linking flag设错了 =o=
只能说连这东西都吃得下去,感恩boost,赞叹boost......
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 60.250.140.192
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1504676611.A.480.html
1F:推 damody: 神奇 09/06 17:28
2F:推 descent: 好威 09/06 17:33
3F:推 troylee: C++11 make_pair 可以改用 initializer list {a,b} 09/10 21:55