如何给枚举值的索引一个得到它?
how to give index of an enum value an get it?
我有这个枚举:
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;
}
相关文章:
- 我在 .h 中有一个枚举类,并且在.cpp错误中有一个运算符重载:与"运算符<<不匹配
- 给枚举一个整数,并在 C++ 中将其相关值作为字符串获取
- 我正在尝试创建一个枚举,但得到了"identifier expected error"
- C++如何将字符串数组中的一个点设置为枚举变量
- C++中一个非常简单的枚举类错误
- 如何编写一个错误结构,该结构可以包含不同的强键枚举作为错误代码
- 如何在交换机中将一个枚举值标记为不适当的大小写
- 从另一个C++文件中C++ "Importing"枚举类
- 如何声明另一个类中的枚举
- C/C :提取一个枚举的子集以形成新的枚举
- 随机生成一个没有重复元素的枚举数组 (C++)
- 有没有办法在一个枚举条目中存储多个值
- 为什么我的程序中的一个枚举具有奇怪的价值131075?
- 将一个枚举映射到另一个枚举
- 在Selene中包装一个枚举,以便在Lua中访问
- 为什么我不能将一个枚举作为另一个枚举的基础类型?
- 初始化一个枚举,比如它是一个类,以避免强制类型转换
- 我怎么能有一个枚举自定义类
- Typedef是C++中的一个枚举值
- C++ DirectX11 返回一个枚举类