【发布时间】:2021-07-21 10:20:18
【问题描述】:
我有一个枚举,我想在 Switch case 条件下将这些枚举类型转换为字符串。
enum WeekEnum
{
Mon = 0;
Tue = 1;
Wed = 2;
}
std::string weekEnumToStr(int n)
{
std::string s("unknown");
switch (n)
{
case 0: { s = "Mon"; } break;
case 1: { s = "Tue"; } break;
case 2: { s = "Wed"; } break;
}
return s;
}
所以在上面我对“Mon”进行了硬编码,而不是有一种方法可以将枚举类型直接作为字符串获取。目前,如果我在 switch case 中传递枚举类型,我得到的 id 为 0 或 1 或 2,但我需要 Mon/Tue/Wed 作为字符串
【问题讨论】:
-
你是说你想做
enum WeekEnum { Mon = "Mon", Tue = "Tue", Wed = "Wed" };?那行不通,enums 需要一个整数类型。但是,您可以在std::unordered_map<WeekEnum, std::string>中使用enum。或者您也可以使用查找表。 -
不,我不想要字符串中的值。我的要求是,如果我在 switch 中传递 0 或 1,我需要返回枚举类型。但是我可以在引号 "" 中传递值,但想要枚举中的确切名称
-
X-宏来拯救?尽管宏一直被指责为 C 的遗留物,不属于当代 C++,但它们可能是恰当的解决方案。
标签: c++