2 flyingbird sxf FlyingBird_SXF 于 2014.11.20 22:26 提问

通过键盘输入整型常量值给枚举类型赋值

碰到了一个问题,定义一个性别的枚举类型,可以通过键盘输入性别,且可输出,如下:
#include
using namespace std;
int main()
{

enum TSex {man,woman};
TSex sex;
cout<<"输入0或1:0代表man,1代表woman"<<endl;
cin>>(int &)sex; //不明白这是怎样将整型值转化为枚举元素值的?
switch(sex)
{
   case man:cout<<"man"<<endl;break;
   case woman:cout<<"woman"<<endl;break;
   default:cout<<"性别输入错误"<<endl;break;
}
return 0;

}
符号(int &)是如何实现整型想枚举元素值转化的呢?

4个回答

91program
91program   Ds   Rxr 2014.11.21 07:35

建议先按 int 型的输入,也按 int 型的进行判断。如果有必要,将 int 赋值给枚举变量用于后继的处理。

bdmh
bdmh   Ds   Rxr 2014.11.21 09:23

接收一个输入,然后转为int

dongtinghong
dongtinghong   2014.11.21 13:21

声明如上的枚举类型变量(TSex sex)时,其实就相当分配了一个(长)整型数据,而(int &)表示取址,cin>>(int&)sex,就是把输入的数据保存到这个地址里面

caozhy
caozhy   Ds   Rxr 2014.11.21 13:31

C++中,枚举其实就是对整数值人为标记的一种形式而已,编译器会自动将man woman转换为0 1,本质上,你的程序等价:
switch(sex) { case 0: ... case 1: ... }; 而C++会自动对枚举编号,如果你不指定特定的值,enum TSex {man,woman};其实就是enum TSex {man = 0,woman = 1};的简写。看这个:enum TSex {man = 1, woman, neithermannorwoman };,那么woman自动会被视作2,而neithermannorwoman就是3

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!