我有这个枚举:
enum Status { CONTINUE, WON, LOST };
我想给一个值的索引(例如WON为1)并获得值(WON)。 我搜索但我发现相反的方法! 我发现这个代码要做,但它再次给我索引:
int main()
{
enum Status { CONTINUE, WON, LOST };
int myInteger = 1;
Status myValue = (Status)myInteger;
cout << myValue <<endl;//it rerurns 1 !!!
system("PAUSE");
}
那么从枚举中获取值的语法是什么? //我需要像array [1]
这样的东西答案 0 :(得分:3)
C ++“继承了”来自C的enum
。它实际上只不过是传统的C语言做法的简写,你的enum
就是这样的:
#define CONTINUE 0
#define WON 1
#define LOST 2
enum
自动为符号分配连续的数字,但不多于此。
C ++ 11添加了enum class
,它创建了一个更像普通类型的枚举,但它仍然没有提供一种(自动)方式将数字表示转换为您使用的符号。
答案 1 :(得分:1)
enum
类型只保存值而不是名称
可能你可以像这样编码
enum Status { CONTINUE, WON, LOST };
const char* status_names[] = {"CONTINUE", "WON", "LOST"};
int myInteger = 1;
cout << status_names[myInteger] << endl;
here是构思链接
答案 2 :(得分:0)
您可以使用STL中的map
。
例如:
#include <iostream>
#include <map>
#include <string>
using namespace std;
int main()
{
typedef enum { CONTINUE, WON, LOST } status_t;
map<int, string> Status = {
{CONTINUE, "CONTINUE"},
{WON, "WON"},
{LOST, "LOST"}
};
cout << Status[1] << endl;
// It's also possible
cout << Status[CONTINUE] << endl;
return 0;
}