首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

用enum,这要如何解决

2012-02-12 
用enum,这要怎么解决?题目是这样的:先前我们说过,C++中的输入输出语句并不能自动识别enum类型的数据。作为

用enum,这要怎么解决?
题目是这样的:
先前我们说过,C++中的输入输出语句并不能自动识别enum类型的数据。作为替代,>>和<<运算符将这种类型的变量简单的当做int来处理。要突破这种界限,可以在用户表示枚举的方式和枚举变量的实际值之间使用switch语句转化。例如, 想象一个enum类型,它的值表示一个组织中的雇员类型。
enum etype{ laborer, secretary,manager,accountant,executive,researcher};
写一个程序,允许用户通过输入某种类型名字的首字母(l, s,m 等)来指定哪种类型,然后把被选择的类型作为enum类型etype的变量的值存储,最后显示这种类型名称的完整单词。
 
Enter employee type (first letter only)laborer, serectary, manager, accountant, executive, researcher):a
Employee type is accountant.

我写的程序是这样的:

#include <iostream>
using namespace std;

enum etype { laborer, serectary, manager, accountant, executive, researcher };

int main()
{
etype Etype;
char type;

cout<<"Please enter employee type(first letter only:laborer, serectary, manager, accountant, executive, researcher):";
  cin>>type;
switch (type)
{
case 'l': cout<<"Employee type is laborer."<<endl; break;
case 's': cout<<"Employee type is serectary."<<endl; break;
case 'm': cout<<"Employee type is manager."<<endl; break;
case 'a': cout<<"Employee type is accountant."<<endl; break;
case 'e': cout<<"Employee type is executive."<<endl; break;
case 'r': cout<<"Employee tyep is researcher."<<endl; break;
default:;
}
return 0;
}

但我感觉没有用到enum.
大虾们,应该怎样做呢?

[解决办法]
case 'l':
Etype = laborer; // 这样就用到enum了
cout<<"Employee type is laborer."<<endl;
break;

[解决办法]
这样可能更符合题意
switch (type)
{
case 'l': Etype = laborer; break;
case 's': Etype = serectary; break;
......
}
switch (Etype)
{
case laborer: cout<<"Employee type is laborer."<<endl; break;
case serectary: cout<<"Employee type is serectary."<<endl; break;
......
}

[解决办法]
#include <iostream>
using namespace std;

enum etype { laborer, serectary, manager, accountant, executive, researcher };

int main()
{
etype Etype;
char type;
char* a[6]={"laborer","serectary","manager","accountant","executive","researcher"};
cout<<"Please enter employee type(first letter only:laborer, serectary, manager, accountant, executive, researcher):";
cin>>type;
switch (type)
{
case 'l': Etype=laborer;break;
case 's': Etype=serectary;break;
case 'm': Etype=manager; break;
case 'a': Etype=accountant; break;
case 'e': Etype=executive; break;
case 'r': Etype=researcher; break;
default:;
}
cout<<"Employee tyep is "<<a[Etype]<<endl;
}

热点排行