Как назначить строку перечислению с помощью C 98?

#string #enums #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?
Я буду вам очень признателен!

Комментарии:

1. enum CS {"AA", "BB", "CC", "DD"}; вы имели в виду недопустимый C ? enum CS {AA, BB, CC, DD};

2. да, спасибо, что поправили меня!

Ответ №1:

Ваше использование карты почти правильно, если значения инициализированы в области функций.

То есть это нормально

 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
}