是否有一种方便的方法来获取字符串(用户输入)并将其转换为枚举值?在这种情况下,字符串将是枚举值的名称,如下所示:
enum Day
{
Sunday = 0,
Monday = 1,
...
}
这样,如果用户给出日期的名称,它就能够将其解析为相应的枚举值。
诀窍是,我有超过 500 个值正在使用,并且它们分布在多个枚举中。
我知道 C# 中的 Enum.Parse 方法,那么在 C 中有这种形式吗?
最佳答案
实现它的标准方法是:
typedef enum {value1, value2, value3, (...) } VALUE;
const static struct {
VALUE val;
const char *str;
} conversion [] = {
{value1, "value1"},
{value2, "value2"},
{value3, "value3"},
(...)
};
VALUE
str2enum (const char *str)
{
int j;
for (j = 0; j < sizeof (conversion) / sizeof (conversion[0]); ++j)
if (!strcmp (str, conversion[j].str))
return conversion[j].val;
error_message ("no such string");
}
反之亦然。
关于在 C 中从字符串转换为枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16844728/