如何通过键盘输入整型数给枚举变量赋值

        在程序设计中,有时会用到由若干个有限数据元素组成的集合,如一周内的星期一到星期日七个数据元素组成的集合,由三种颜色红、黄、绿组成的集合,一个工作班组内十个职工组成的集合等等,程序中某个变量取值仅限于集合中的元素。此时,可将这些数据集合定义为枚举类型。因此,枚举类型是某类数据可能取值的集合,如人的性别的集合{man,woman}。可如下定义:

         enum TSex{ man,woman};

         而且,枚举类型与整型常量值有一定的联系.。上面定义了一个名为TSex的枚举类型,它有2个元素值:man,woman。在编译器编译程序时,给枚举类型中的每一个元素指定一个整型常量值(也称为序号值)。若枚举类型定义中没有指定元素的整型常量值,则整型常量值从0开始依次递增。因此TSex的2个元素man,woman依次对应整型常量值0,1。但是,枚举类型有以下两个特点:

  1. 不能用键盘通过"cin>>"向枚举变量输入元素值,只能通过初始化或赋值运算符输入。例如:
    enum TSex {man,woman} sex1=man;//定义枚举变量时进行初始化
    TSex sex2; //定义了一个TSex类型的枚举变量sex2
    sex2=man;//通过赋值运算将元素值man赋给sex2
    TSex sex3;
    cin>>sex3;//这是错误的,无论输入元素值man,woman还是序号值0,1
  2. 可用"cout<<"输出枚举变量,但输出的是元素对应的序号值,而不是元素值。例如
    cout<

        虽然不能通过键盘直接给枚举变量输入元素值,但是可以将输入的整型常量值强制转换后赋给枚举变量。例如,定义一个性别的枚举类型,通过键盘设定性别,并输出。

方法1:通过符号(int &)

        #include 
        using namespace std;
        int main()
        {  
        enum TSex {man,woman};//定义枚举类型TSex
        TSex sex; //定义枚举变量sex
         cout<<"输入0或1:0代表man,1代表woman"<>(int &)sex; //通过整型引用给sex赋值
         switch(sex)  //通过switch循环输出性别
        {
         case man:cout<<"man"<

方法2:通过枚举类型(enum TSex)

        #include 
        using namespace std;
        int main()
        {  
        enum TSex {man,woman};//定义枚举类型TSex
        TSex sex; //定义枚举变量sex
        int gender;//定义临时变量gender,用于保存输入的序号值

         cout<<"输入0或1:0代表man,1代表woman"<

参考资料:

C语言枚举类型enum

枚举类型的定义



你可能感兴趣的:(C/C++)