c++ - 如何像 java 一样迭代 C++ 中的枚举?

标签 c++ enums

<分区>

Possible Duplicate:
C++: Iterate through an enum

我在 C++ 中有以下枚举;

typedef enum
{
    APP_NONE = 0,
    APP_SESSION = 0x80000001,
    APP_TITLE = 2,
} APP_TYPE;

我正在写一个测试函数,它接受一个字符串,得到相关的整数,比如:getEnumByString("APP_NONE") = 0; 或者反之亦然 getEnumString(0)="APP_NONE".

是否可能,如何完成?

最佳答案

您可以将 enum 值推送到一个容器中,例如 vector 或集合,然后对其进行迭代。

std::vector<APP_TYPE> types;
types.push_back(APP_NONE);
types.push_back(APP_SESSION);
types.push_back(APP_TITLE);

您可以使用映射将 enum 值与字符串相关联,反之亦然。

std::map<APP_TYPE, std::string> type2string;
type2string[APP_NONE] = "APP_NONE";
type2string[APP_SESSION] = "APP_SESSION";
type2string[APP_TITLE] = "APP_TITLE";

关于c++ - 如何像 java 一样迭代 C++ 中的枚举?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11307076/

相关文章:

c++ - 无法使用 Atmel 寄存器编译 Arduino 代码

c++ - 在哪些平台上整数除以零会触发浮点异常?

c++ - C++14 中的 Lambda-Over-Lambda

java - 如何将枚举值传递给构造函数

c++ - 如何使用 std::nested_exception 和 friend ?

java - 实例化和使用枚举单例

java - java编译器有多聪明?关于枚举方法的问题

c++ - "Where"这个重载运算符是否接受 "out"?

hibernate - JPA 实体中的枚举字段

c++ - 尝试计算二维数组中的特定字符,但计算整个数组