首页 > 解决方案 > 如何使用 C++98 将字符串分配给枚举?

问题描述

我已经声明了一个枚举和一个字符串

string SS;

enum CS {AA, BB, CC, DD};

我想创建一个名为 CN 类型为 CS 的变量并将 SS 分配给枚举 CS。

我在网上查了一下,大多数解决方案都是针对 C++11 及更高版本的。我尝试使用地图,但它不起作用。

map<string, enum> CN;
  CN["AA"]=0;
  CN["BB"]=1;
  CN["CC"]=2;
  CN["DD"]=3;

谁能给我一些建议?如何将 CS 创建为类型枚举 CS?我会很感激的!

标签: stringenumsc++98

解决方案


只要在函数范围内初始化值,您对 map 的使用几乎是正确的。

即这没关系

std::map<std::string, CS> CN;

int main() {
    CN["AA"]=AA;
    CN["BB"]=BB;
    CN["CC"]=CC;
    CN["DD"]=DD;

    // use CN
}

然而这不是

std::map<std::string, CS> CN;
CN["AA"]=AA; // can't have expressions at namespace scope
CN["BB"]=BB;
CN["CC"]=CC;
CN["DD"]=DD;

int main() {
    // try to use CN
}

推荐阅读