为了账号安全,请及时绑定邮箱和手机立即绑定

请问我该如何用简单的方法根据num的值获得“ZERO”,“ONE”之类的字符串变量?

请问我该如何用简单的方法根据num的值获得“ZERO”,“ONE”之类的字符串变量?

拉风的咖菲猫 2022-05-30 14:10:57
假设一个枚举类型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]

查看完整回答
反对 回复 2022-06-06
?
哆啦的时光机

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()得到该值。

查看完整回答
反对 回复 2022-06-06
?
慕运维8079593

TA贡献1876条经验 获得超5个赞

tostring方法。
----------------
回答你的补充提问:
我觉得那样为什么要定义成枚举?定义成数组也许好些吧?或者定义哈希表之类的对应起来,
两者可以互相查。

查看完整回答
反对 回复 2022-06-06
?
慕婉清6462132

TA贡献1804条经验 获得超2个赞

可以这样做:
NUMBERLIST s = (NUMBERLIST)Enum.Parse(typeof(NUMBERLIST), 1);

查看完整回答
反对 回复 2022-06-06
  • 4 回答
  • 0 关注
  • 129 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信