假设一个枚举类型typedef enum NUMBERLIST{int ZERO = 0;int ONE = 1;int TWO = 2;}NUMBER;NUMBER num;现在我要如何用简单的方法根据num的值获得“ZERO”,“ONE”之类的字符串变量?用switch或者if不可行,实际的变量数非常多忘记说了,是用C的方法实现,编译器是gcc,C#或者C++的方法没法用
4 回答
慕桂英546537
TA贡献1848条经验 获得超10个赞
c语言里的枚举实际上是结构体,枚举项是变量名,没法直接获得的……你可以再自己定义一个字符串数组:
char numberString[30][MAX_LENGTH]={"ZERO","ONE","TWO"}
在需要用到原来枚举的地方这样调用
numberString[num.ZERO]
哆啦的时光机
TA贡献1779条经验 获得超6个赞
将枚举的值转换为对应的名字
inthashCode = Color.Red.GetHashCode(); stringenumParseStr = Enum.Parse(typeof(Color), hashCode.ToString()).ToString();Enum.Parse()得到的值是object类型的,我们要转换的是值,得到的是名字,因此ToString()得到名字。
将枚举的名字转换为对应的值
stringstr = Color.Red.ToString(); intenumParseInt = Convert.ToInt32(Enum.Parse(typeof(Color), str));这里要转换的是名字,得到的是值,因此用Convert.ToInt32()得到该值。
慕运维8079593
TA贡献1876条经验 获得超5个赞
tostring方法。
----------------
回答你的补充提问:
我觉得那样为什么要定义成枚举?定义成数组也许好些吧?或者定义哈希表之类的对应起来,
两者可以互相查。
- 4 回答
- 0 关注
- 129 浏览
添加回答
举报
0/150
提交
取消