首页 > 解决方案 > 如何在 C++ 中使用可以具有多种数据类型的单个变量

问题描述

一个变量怎么可能有两种数据类型?如果“月”是一个变量,它应该取自 std::cin 的输入。我应该怎么做才能让用户输入像“January”这样的字符串或输入像1这样的整数?

标签: c++

解决方案


在 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

我希望这能回答您的问题快乐编码!


推荐阅读