c++ - 如何在 C++ 中使用可以具有多种数据类型的单个变量
问题描述
一个变量怎么可能有两种数据类型?如果“月”是一个变量,它应该取自 std::cin 的输入。我应该怎么做才能让用户输入像“January”这样的字符串或输入像1这样的整数?
解决方案
在 C++ 17 中,我们得到了一个叫做 std::variant 的东西,它基本上是一个类型安全的联合来使用它,你只需声明你需要的类型:
std::variant<int, std::string> data;
data = "Hello!";
data = 13;
// No Compilation Issues
困难的部分是当您想要检索数据时
std::string& text = std::get<std::string>(data):
int& number = std::get<int>(data);
但请确保您定义它的最后一件事是您尝试检索含义的类型:
data = 13;
std::string& text = std::get<std::string>(data); // Bad Exception Error
更好的方法是使用 std::get_if
if (auto temp = std::get_if<std::string>(&data);
std::string& text = *temp; // do what ever you want
我希望这能回答您的问题快乐编码!
推荐阅读
- python - 基于一个字段的查询集差异
- google-app-maker - 当allowNull = true并且字段为布尔值时,如何隐藏appmaker单选组中的空项目选项?
- linux - 如何在 Ubuntu 上为 Android Studio 配置 KVM?
- java - 什么 Sonarqube 扫描器负责收集 Java 的代码重复分析?
- ios - Google PlacePicker 未显示位置建议
- php - 我的 ajax 代码没有向服务器发送数据并得到响应
- python - 将我的实时输出打印到 txt 文件不起作用 python
- java - Avro 序列化异常 - java.time.Instant 不能转换为 java.lang.Long
- sql - DISTINCT AND COUNT(*)=1 不适用于 SQL
- android - TextInputLayout 中的 EditText 没有正确的样式