witch在代码中大家一定经常用到,而在MFC代码里,CString用到的次数应该更经常,但我们都知道,switch的代码里,不是可以用CString变量的,这让我们很头痛,只能选择用if else来做跳转了,使的代码看起来很不舒服,所以花了一上午的时间整了个函数,直接将字符串用到Switch里。呵呵,虽然不是正正的switch,但起码看起来像Switch了,可以有效的提高代码可读性。话说到这里结束,上代码来,有兴趣的朋码可以帮忙完善一下。
1. 添加如下代码到你的代码中
#define SWITCH(str,...) switch(Switch(str, ##__VA_ARGS__, _T("___End___")))
int Switch(CString str,...)
{
va_list list;
int i = 0;
va_start(list,str);
CString Case(_T(""));
while(Case != _T("___End___"))
{
Case = va_arg(list,TCHAR*);
if(Case == str)
{
return i;
}
i++;
}
va_end(list);
return -1;
}
2. 使用方法
void Test()
{
CString str(_T("Help"));
SWITCH(str,_T("OK"),_T("Help"))
{
case 0:
{
// OK
break;
}
case 1:
{
// Help
break;
}
default:
{
break;
}
}
}