把枚举转化为相应的字符串

今天无意间就需要这样的一个功能,从枚举值得到对应的字符串表示,一个容易想到的方法就是再造个字符串数组,和ENUM对应起来,显然这个方法没有可扩展性;第二种方法在stackoverflow上看到的就是巧妙的利用 宏 来生成对应的字符串数组,感觉非常巧妙,易于扩展。下面是这两种方法的代码。

#include<stdio.h>
#include<stdlib.h>

enum cmd{
	CMD_UNSPEC = 0,
	CMD_ADD,
	CMD_SUB,
	CMD_MULTI,
	CMD_DIV,
};
static inline char * cmd_str(enum cmd c){
	static const char *strings[] = {"CMD_UNSPEC", "CMD_ADD", "CMD_SUB", "CMD_MULTI", "CMD_DIV", };
	return strings[c];
}

int main(void){

	printf("%s\n", cmd_str(CMD_ADD));

	exit(0);
}

方法2:

#include<stdio.h>
#include<stdlib.h>

/*将相应的枚举类型转为字符串(这种方法很重要)*/
#define FOREACH_CMD(CMD)         CMD(CMD_UNSPEC)           CMD(CMD_ADD)          CMD(CMD_SUB)           CMD(CMD_MULTI)
#define GENERATE_ENUM(ENUM) ENUM,
#define GENERATE_STRING(STRING) #STRING,

enum CMD_ENUM {
    FOREACH_CMD(GENERATE_ENUM)
};

static const char *CMD_STRING[] = {
    FOREACH_CMD(GENERATE_STRING)
};

int main(void){
	printf("%s\n", CMD_STRING[CMD_ADD]);
	exit(0);
}

时间: 2024-07-29 09:01:34

把枚举转化为相应的字符串的相关文章

再谈怎样以最简单的方法将泛型为String类型的集合或String类型的数组转化为逗号间隔字符串形式

今天review代码,看见某些大爷在将泛型为String类型的集合或String类型的数组转化为逗号间隔字符串形式时仍然仅仅顾结果不注重过程,"大爷"咱能负点责任吗? 将泛型为String类型的集合转化为逗号间隔字符串形式: 測试类: package com.ghj.packageofclient; import java.util.ArrayList; import java.util.List; import com.ghj.packageoftool.StringUtils; p

再谈如何以最简单的方法将泛型为String类型的集合或String类型的数组转化为逗号间隔字符串形式

今天review代码,看见某些大爷在将泛型为String类型的集合或String类型的数组转化为逗号间隔字符串形式时仍然只顾结果不注重过程,"大爷"咱能负点责任吗? 将泛型为String类型的集合转化为逗号间隔字符串形式: 测试类: package com.ghj.packageofclient; import java.util.ArrayList; import java.util.List; import com.ghj.packageoftool.StringUtils; pu

oc 之中的 汉字字符串转化成为拼音 汉字字符串的排序

在oc 之中的字符串为汉字的时候,我们经常要进行字符串比較,可是汉字不能比較,所以就要将汉字转化成为拼音,详细步骤例如以下: //可变字符串 必须是可变字符串. NSMutableString *mutableString = [NSMutableString stringWithString:@"小明"]; //转成带声调的拼音 CFStringTransform((CFMutableStringRef)mutableString, NULL, kCFStringTransformT

SQL中CONVERT()转化函数的用法 字符串转日期

1 SELECT CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AM 2 SELECT CONVERT(varchar(100), GETDATE(), 1): 05/16/06 3 SELECT CONVERT(varchar(100), GETDATE(), 2): 06.05.16 4 SELECT CONVERT(varchar(100), GETDATE(), 3): 16/05/06 5 SELECT CONVERT(var

把数据库中有关枚举项值的数字字符串转换成文字字符串

标题可能无法表达我的本意.比如,有这样一个枚举: public enum MyChoice { MyFirstChoice = 0, MySecondChoice =1, MyThirdChoice = 2 } 数据库中,某表某字段保存值为"0,1,2",在显示的时候,我们希望是"第一个选择,第二个选择,第三个选择".如何做呢? 可以为枚举项上面标注自定义特性.先自定义一个特性如下: public class EnumDisplayNameAttribute : A

js将时间戳转化成时间格式字符串(兼容各种浏览器)

起初为了简便起见,使用了toLocaleString()这个方法,结果问题就出现了. <script type="text/javascript"> new Date(parseInt(1421683200) * 1000).toLocaleString(); //IE浏览器下结果为:2015年1月20日 0:00:00 //Google浏览器下结果为:2015/1/20 上午12:00:00 //Firefox浏览器下结果为:2015/1/20 上午12:00:00 //

格林威治时间转化成为标准时间的字符串

有时从数据库中取得的时间后面带.0,想把这给去掉,具体作法 String date = "2013-03-10 09:08:06.0"; SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date d = sdf.parse(date); String dd =sdf.format(d); System.out.println(dd);

枚举与字符串映射

代码: #import <Foundation/Foundation.h> typedef NS_ENUM(NSUInteger, NetworkStatus){ NetworkStatusGood = 0, NetworkStatusBad }; NSString * const NetworkStatusNameMapping[] = { [NetworkStatusGood] = @"NetworkStatusGood", [NetworkStatusBad] = @

Python:利用内建函数将字符串转化为整数

使用内建函数raw_input()内建函数,它读取标准输入,并将读取到的数据赋值给指定的变量.我们可以使用int()内建函数将用户输入的字符串转换为整数: >>> user = raw_input("Enter login name:") Enter login name: root >>> print "Your Login is:", user Your Login is:  root 上面这个例子只能用于文本输入,下面输入一