如何使用 C++98 将字符串分配给枚举?

How to assign string to enum using 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? 我会非常感激!

只要在函数范围内初始化值,您对 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
}