【发布时间】:2021-09-01 05:46:00
【问题描述】:
我已经声明了一个像这样的枚举:
enum Month
{
Mon,
Tue,
Wed,
Thu,
Fri,
Sat,
Sun
};
现在给定一个字符串"Mon",如何得到0,即它在枚举中的索引?
有什么简单的方法吗?
我正在尝试编写一个类似nextDay(day, number) 的函数,它接受day= "Mon" 或"Tue" 或...,以及一个数字,并返回该天数之后的第二天。
所以,如果day = "Mon" 和number = 2,它应该返回"Wed"。
所以,我选择为此使用枚举。但我被困在这一点上。
【问题讨论】:
-
没有办法自动将字符串映射到枚举。您可以使用地图之类的东西为您创建映射。
-
int day = Mon; printf("Three days after Monday is day number %d\n", day + 3);如果要获取字符串,可以使用字符串数组并将枚举用作索引。 -
像better-enums 这样的库可能会有所帮助。
-
顺便说一下,像
Month这样的名称用于weekday 枚举非常令人困惑。 -
注意:如果你使用枚举类而不是经典枚举,这是一个更好的习惯。