使用整数显示枚举类型的值

时间:2012-07-13 05:31:25

标签: c++

我想通过使用enumType变量获取当前状态。但是使用这些代码我不能得到值..例如,如果enumType = 3状态应该爬行...

#include <iostream>
#include <windows.h>
#include <ctime>

using namespace std;

int main()
{
    int enumType;

    srand((unsigned)time(0));

    enumType = rand()%3;

    enum state{
        stand,
        walk,
        run,
        crawl,
    };

    state currentState;
    (int)currentState =enumType;

    cout<<state.currentState;

    system("pause");
    return 0;
}

3 个答案:

答案 0 :(得分:2)

多德。 C / C ++不能那样工作:)。如果你想要“有意义的名字”(比如“enum state 3”==“crawl”),那么你可以自己将枚举值映射到文本字符串。

您可以创建静态表,可以使用“switch / case”块,也可以使用STL映射。有很多选择 - 但你必须自己手动完成。它不是自动内置到语言中的(如C#)。

答案 1 :(得分:2)

string strState;

switch(currentState)
{
   case stand:
     strState = "Stand";
   break;

   case walk:
     strState = "walk";
   break;

   case run:
     strState = "run";
   break;

   case crawl:
     strState = "crawl";
   break;
}

cout << strState;

答案 2 :(得分:1)

这就是你需要的:

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<math.h>
#include <cstdlib>
#include <ctime>


int main()
{

srand(time(0));


enum state{
    stand,
    walk,
    run,
    crawl,
};
state min=stand;
state max=crawl;
state enumType = (state)(rand()%((max-min)+1));

state currentState;
currentState =enumType;

printf("  %i  ",currentState);


return 0;
}

结果是:

1 1 0 1 0 2 ... 每次跑步,0-2之间的不同值因为它是“地板” 新编辑:(max-min)+1)在模数事物中