Re: [討論] boost::variant有沒有更好的做法?

看板C_and_CPP作者 (殺人貓™)時間6年前 (2017/09/06 13:43), 編輯推噓3(300)
留言3則, 3人參與, 最新討論串2/2 (看更多)
自己回自己,之前原來是自己在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://www.ptt.cc/bbs/C_and_CPP/M.1504676611.A.480.html

09/06 17:28, , 1F
神奇
09/06 17:28, 1F

09/06 17:33, , 2F
好威
09/06 17:33, 2F

09/10 21:55, , 3F
C++11 make_pair 可以改用 initializer list {a,b}
09/10 21:55, 3F
文章代碼(AID): #1Phui3I0 (C_and_CPP)
文章代碼(AID): #1Phui3I0 (C_and_CPP)