如何在c ++中像java一样迭代枚举?

时间:2012-07-03 08:23:28

标签: c++ enums

  

可能重复:
  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”。

是否有可能以及如何完成它?

2 个答案:

答案 0 :(得分:1)

您可以将enum值推送到容器中,例如矢量或集合,然后迭代它。

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";

答案 1 :(得分:0)