c - 从 C 中的输入字符串获取枚举值

标签 c enums

<分区>

问题:我们有以下枚举声明:

enum yytokentype
  {
    ID = 258,
    SEMI = 259,
    NUMBER = 260,
    DECIMAL = 261,
    SENTENCE = 262,
    LETTER = 263,
    ASSIGN = 264,
    //etc... }

现在我们得到一个字符串,其值可以是“ID”、“SEMI”、“NUMBER”等。我们必须将与该字符串对应的整数存储在单独的整数数组中的枚举 yytokentype 中。我不确定如何在 C 中执行此操作。C# 有一些答案,但我在这里严格要求 C。 TIA。

最佳答案

所以你想将一个字符串映射到一个枚举值?然后一个带有字符串和枚举的简单结构数组就可以了:

struct map_structure
{
    const char *name;
    enum yytokentype value;
} mapping[] = {
    { "ID", ID },
    { "SEMI", SEMI },
    .
    .
    .
};

然后,如果您有字符串 "ID",只需遍历数组 mapping 以找到具有相同字符串的条目,您就得到了您的值。

关于c - 从 C 中的输入字符串获取枚举值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36267774/

相关文章:

c - Printf 使程序在 C 中工作,htonl 和 ntohl 不工作?

c - 有没有一种方法可以将 "nickname"赋予具有长名称/路径的变量,而无需在 C 中进行赋值

c - 如何使用 C 从 ImageMagick Wand 中提取 PPM 图像属性?

scala - Scala 构造函数和枚举的问题

java - 在 Hibernate 中映射 Java 8 月份枚举列表

groovy - Groovy 中的 enum 中的 enum 永远循环,为什么?

c - 我是否需要担心 Valgrind 报告超出我的应用程序范围的错误?

java - 序列化枚举

python - 从构造函数中选择枚举值?

c++ - 如何从 operator new 或 malloc 为 mremap 获取页对齐内存