C ++ строка для перечисления - PullRequest
16 голосов
/ 23 августа 2011

Есть ли в C ++ простой способ преобразовать строку в перечисление (аналогично Enum.Parse в C #)? Оператор switch будет иметь длину очень , поэтому мне интересно, есть ли более простой способ сделать это?

EDIT:

Спасибо за все ваши ответы. Я понял, что есть гораздо более простой способ сделать это для моего конкретного случая. Строки всегда содержали символ «S», за которым следовало какое-то число, поэтому я просто сделал

int i = atoi(myStr.c_str() + 1);

, а затем сделал переключение на я.

Ответы [ 12 ]

0 голосов
/ 28 марта 2017

"Дополнительный вопрос: можно ли обрабатывать неопределенные строки? Я имею в виду, если я попытаюсь получить значение для responseHeaderMap [" cookie "], какое будет значение? (При условии, что" cookie "не определено в responseHeaderMap - Барт с 22 ноября 16 в 12:04 "

ну, вы можете просто сделать проверку раньше:

auto it = responseHeaderMap.find("cookie");
if (it != responseHeaderMap.end())
{
     // "cookie" exist, can take value 
}

После проверки «cookie» вы можете получить значение с помощью:

responseHeaderMap["cookie"]

надеюсь, что это поможет

0 голосов
/ 23 августа 2011

Нет, вам придется использовать конструкцию if / then или использовать карту, хеш-таблицу или другой тип ассоциативной структуры данных, чтобы облегчить это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...