我有一个Map std::map<std::string, boost::any>,来自boost::program_options包.现在我想打印该地图的内容:
for(po::variables_map::const_iterator it = vm.begin(); it != vm.end(); ++it) {
std::cerr << it->first << ": " << it->second << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,这是不可能的,因为boost::any没有operator<<定义.
打印该地图最简单的方法是什么?
我可以为任何自动尝试将每个输出运算符定义为anyint,然后是double,然后是字符串等,每次忽略错误并尝试强制转换直到转换成功并且我可以打印为指定类型.
但是在Boost中应该有一个更简单的方法吗?我需要像反向的东西lexical_cast......