C++枚举与字符串之间的转换

template<typename EnumType>
struct SEnumName
{
	static const char* List[];
};
enum ProgLang
{
	e_cpp,
	e_java,
	e_csharp
};
const char* SEnumName<ProgLang>::List[] =
{
	"cpp",
	"java",
	"csharp"
};

enum ScriptLang
{
	e_lua,
	e_actionscript,
	e_javascript
};
const char* SEnumName<ScriptLang>::List[] =
{
	"lua",
	"actionscript",
	"javascript"
};
template<typename EnumType>
EnumType ConvertStringToEnum(const char* pStr)
{
	EnumType fooEnum = static_cast<EnumType>(-1);
	int count = sizeof(SEnumName<EnumType>::List) /
		sizeof(SEnumName<EnumType>::List[0]);
	for (int i = 0; i < count; ++i)
	{
		const char *ch = SEnumName<EnumType>::List[i];
		if (!abs(strcmp( pStr, SEnumName<EnumType>::List[i])))
		{
			fooEnum = static_cast<EnumType>(i);
			break;
		}
	}
	return fooEnum;
}
template<typename EnumType>
const char * ConvertEnumToString(EnumType enumPara)
{
	return SEnumName<EnumType>::List[enumPara];
}
int _tmain(int argc, _TCHAR* argv[])
{
	
	ProgLang fooEnum = ConvertStringToEnum<ProgLang>("cpp");
	cout << "fooEnum:" << fooEnum << endl;

	ScriptLang fooEnum1 = ConvertStringToEnum<ScriptLang>("javascript");
	cout << "fooEnum1:" << fooEnum1 << endl;

	const char *str = ConvertEnumToString<ProgLang>(e_cpp);
	cout << "fooEnum str:" << str << endl;

	return 0;
}
如题:枚举类型与字符串之间的转换。
  • 6
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值