如何给枚举值的索引一个得到它?

how to give index of an enum value an get it?

本文关键字:一个 枚举 索引      更新时间:2023-10-16

我有这个枚举:

enum Status { CONTINUE, WON, LOST };

我想给一个值的索引(例如 1 代表 WON)并获取值 (WON)。 我搜索了,但我只是找到了相反的方法!! 我找到了这段代码,但它再次给了我索引:

int main()
{
enum Status { CONTINUE, WON, LOST };
int myInteger = 1;
Status myValue = (Status)myInteger;
cout << myValue <<endl;//it rerurns 1 !!!
system("PAUSE");
}

那么从枚举获取值的语法是什么?//我需要类似数组的东西[1]

C++从Cenum"继承"的。它实际上只不过是C语言中传统做事方式的简写符号,其中您的enum应该是这样的:

#define CONTINUE 0
#define WON 1
#define LOST 2

enum自动为符号分配连续的数字,但仅此而已。

C++11 添加了enum class,用于创建更像普通类型的枚举,但它仍然没有提供从数字表示形式转换为所用符号的(自动)方法。

enum类型只保存值而不是名称

也许你可以这样编码

enum Status { CONTINUE, WON, LOST };
const char* status_names[] = {"CONTINUE", "WON", "LOST"};
int myInteger = 1;
cout << status_names[myInteger] << endl; 

这是IDEone链接

您可以使用STL 中的map

对于 instace:

#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;
}