switch……case不能匹配字符串的方法
思路: 将字符串添加到map容器中 然后比较字符串名 获得该字符串所对应的索引值 在Switch中使用这个索引值判断 在stdafx.h 添加头文件 #include //注 在CPP中直接添加头文件时 出现了错误 不知道什么原因造成的[cpp] view p
·
思路:
将字符串添加到map容器中
然后比较字符串名 获得该字符串所对应的索引值
在Switch中使用这个索引值判断
在stdafx.h 添加头文件
#include <map> //注 在CPP中直接添加头文件时 出现了错误 不知道什么原因造成的
- CString fontNameStr;
- std::map<int,CString> nameMap;
- nameMap.insert(std::make_pair(1,L"小篆"));
- nameMap.insert(std::make_pair(2,L"宋体"));
- nameMap.insert(std::make_pair(3,L"楷体"));
- fontNameStr=L"宋体";
- int nIndex=0;
- std::map<int,CString>::iterator iter;
- for(iter=nameMap.begin();iter!=nameMap.end();iter++)
- {
- if (iter->second.CompareNoCase(L"宋体")==0)
- {
- nIndex=iter->first;
- break;
- }
- }
- switch(nIndex)
- {
- case 1:
- break;
- default:
- break;
- }
<span style="font-size:18px;"><span style="font-size:18px;"> CString fontNameStr;
std::map<int,CString> nameMap;
nameMap.insert(std::make_pair(1,L"小篆"));
nameMap.insert(std::make_pair(2,L"宋体"));
nameMap.insert(std::make_pair(3,L"楷体"));
fontNameStr=L"宋体";
int nIndex=0;
std::map<int,CString>::iterator iter;
for(iter=nameMap.begin();iter!=nameMap.end();iter++)
{
if (iter->second.CompareNoCase(L"宋体")==0)
{
nIndex=iter->first;
break;
}
}
switch(nIndex)
{
case 1:
break;
default:
break;
}
</span></span>
不过用容器做 有点画蛇添足 , 还不如使用下面方式简单明了
- CString fontNameStr;
- if(fontNameStr.CompareNoCase(L"小篆")==0) nIndex=1;
- if(fontNameStr.CompareNoCase(L"宋体")==0) nIndex=2;
- if(fontNameStr.CompareNoCase(L"楷体")==0) nIndex=3;
- switch(nIndex)
- {
- case 1:
- break;
- case 2:
- break;
- case 3:
- break;
- default:
- break;
- }
<span style="font-size:18px;"><span style="font-size:18px;"> CString fontNameStr;
if(fontNameStr.CompareNoCase(L"小篆")==0) nIndex=1;
if(fontNameStr.CompareNoCase(L"宋体")==0) nIndex=2;
if(fontNameStr.CompareNoCase(L"楷体")==0) nIndex=3;
switch(nIndex)
{
case 1:
break;
case 2:
break;
case 3:
break;
default:
break;
}
</span></span>
参考资料:
http://blog.csdn.net/litoyao/article/details/5591763
http://blog.csdn.net/shuilan0066/article/details/7947396
另一种用枚举的解决办法:http://blog.csdn.net/chanchaw/article/details/7584642
switch case
只支持整数和枚举类型
不支持其他数据类型
支持枚举类型的示例:
更多推荐
已为社区贡献2条内容
所有评论(0)