猿问

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

假设一个枚举类型
typedef enum NUMBERLIST

{
int ZERO = 0;

int ONE = 1;

int TWO = 2;

}NUMBER;

NUMBER num;

现在我要如何用简单的方法根据num的值获得“ZERO”,“ONE”之类的字符串变量?用switch或者if不可行,实际的变量数非常多
忘记说了,是用C的方法实现,编译器是gcc,C#或者C++的方法没法用

拉风的咖菲猫
浏览 130回答 4
4回答

慕桂英546537

c语言里的枚举实际上是结构体,枚举项是变量名,没法直接获得的……你可以再自己定义一个字符串数组:char numberString[30][MAX_LENGTH]={"ZERO","ONE","TWO"}在需要用到原来枚举的地方这样调用numberString[num.ZERO]

哆啦的时光机

将枚举的值转换为对应的名字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

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

慕婉清6462132

可以这样做:NUMBERLIST s = (NUMBERLIST)Enum.Parse(typeof(NUMBERLIST), 1);
随时随地看视频慕课网APP
我要回答