You can map the strings to enum values, then switch on the enum:
enum Options { Option_Invalid, Option1, Option2, //others... }; Options resolveOption(string input); // ...later... switch( resolveOption(input) ) { case Option1: { //... break; } case Option2: { //... break; } // handles Option_Invalid and any other missing/unmapped cases default: { //... break; } }
Resolving the enum can be implemented as a series of if
checks:
Options resolveOption(std::string input) { if( input == "option1" ) return Option1; if( input == "option2" ) return Option2; //... return Option_Invalid; }
Or a map lookup:
Options resolveOption(std::string input) { static const std::map<std::string, Option> optionStrings { { "option1", Option1 }, { "option2", Option2 }, //... }; auto itr = optionStrings.find(input); if( itr != optionStrings.end() ) { return itr->second; } return Option_Invalid; }