c++ - 如何使用 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;
有人可以帮我解决这个错误吗?
解决方案
没有operator<<
for std::variant
,不能直接打印出来。您需要从变体中读取值(按索引或类型),例如
std::cout << std::get<bool>(kwargs["flag"]) << std::endl;
或者
std::cout << std::get<2>(kwargs["flag"]) << std::endl;
推荐阅读
- scala - 如何定义一个 HList 类型,但基于另一个 HList 类型
- c# - 在 Linq 中,如何根据子记录进行查询?
- javascript - 显示和隐藏元素 html 和 javascript
- python - 如何使用三重指数平滑来预测未来?
- qt - 我不小心重构了一个 QT 类
- templates - 有没有办法通过模板将 imagePullSecrets 添加到默认的 ServiceAccount 中?
- python - tkinter 窗口没有响应
- python - 在 python 中只转发带有 tweepy 的媒体的推文
- css - 如何在部分中显示固定的视频背景?
- javascript - 如何检查字符串是 xml 还是不使用 Node.js