首页 > 解决方案 > 如何使用 std::variant 打印地图键/值?

问题描述

我正在尝试在我的字典中打印某个值的键。我这样定义我的地图:

std::map<std::string, std::variant<float,int,bool,std::string>> kwargs; 
kwargs["interface"] = "probe"; 
kwargs["flag"] = true; 
kwargs["Height"] = 5; 
kwargs["length"] = 6; 

我尝试正常打印该值,但出现(没有运算符“<<”与这些操作数匹配)错误。

std::cout << kwargs["flag"] << std::endl; 

有人可以帮我解决这个错误吗?

标签: c++dictionaryvariant

解决方案


没有operator<<for std::variant,不能直接打印出来。您需要从变体中读取值(按索引或类型),例如

std::cout << std::get<bool>(kwargs["flag"]) << std::endl; 

或者

std::cout << std::get<2>(kwargs["flag"]) << std::endl; 

推荐阅读