如何在类似java的c++中迭代器枚举

How to iterator the enum in c++ like java?

本文关键字:c++ 迭代器 枚举 java      更新时间:2023-10-16

可能重复:
C++:遍历枚举

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

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

我正在写一个测试函数,它接受一个字符串,获取相关的整数,例如:getEnumByString("APP_NONE"(=0;反之亦然,getEnumString(0(="APP_NONE"。

有可能吗?如何完成?

您可以将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";

看看这个:http://www.codeproject.com/Articles/42035/Enum-to-String-and-Vice-Versa-in-C