【问题标题】:good way to map enums to strings in C在 C 中将枚举映射到字符串的好方法
【发布时间】:2014-04-06 09:15:42
【问题描述】:

我有一堆看起来像这样的枚举(如果您想知道,来自 libvirt 库):

enum whatever {
    VAL_A = 1
    VAL_B = 2
    ...
}

如何将这些转换为有意义的字符串?也就是说,VAL_A 具有状态含义“meaning_A”,VAL_B 具有状态含义“meaning_B”等等。在 php 或 perl 或 python 中,我会生成一个 key:val 对并在 O(1) 时间内返回结果。有没有一种有效的方法将这些映射到 C 中有意义的字符串?我正在考虑一个 switch 语句,但想知道更好的方法。

谢谢,

维克。

【问题讨论】:

标签: c data-structures hash enums


【解决方案1】:

尝试将其用作数组索引:

char *strs[] = {"meaning_A", "meaning_B", "etc."};
strs[(int)enumvar - 1];

【讨论】:

  • 如果我的枚举值有五个从 1 到 9000 的值怎么办?在那种情况下,我不会分配不必要的空间吗?
  • @VikhyathReddy:抱歉,误读了您的评论。那么切换可能会更容易。
  • 如果你真的有一个稀疏的数据集,你要么浪费空间,要么使用比 O(1) 慢的东西,比如二叉树。我相当怀疑 perl、python 等实际上是 O(1)。
猜你喜欢
  • 2021-11-09
  • 2019-01-29
  • 1970-01-01
  • 1970-01-01
  • 2013-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-06
相关资源
最近更新 更多