Я пытаюсь реализовать очень простой клон redis в C++. Поэтому, когда я получаю запросы, мне нужно их разобрать. Сейчас я делаю это:Множественные сравнения строк
void Query::buildQuery(){
std::string query_type = lower(args[0]);
if(query_type == "get"){ //do something }
else if(query_type == "set"){ //do something }
else if(query_type == "getbit"){ //do something }
else if(query_type == "setbit"){ //do something }
else if(query_type == "zadd"){ //do something }
else if(query_type == "zcard"){ //do something }
else if(query_type == "zcount"){ //do something }
else if(query_type == "zrange"){ //do something }
else if(query_type == "save"){ //do something }
else { throw(QueryException("Invalid query type")); }
}
Есть ли другой, более короткий способ сделать это? Я не хочу включать какую-либо другую библиотеку, кроме STL.
Этот ответ является способом использования переключателя для замены 'if() else if() ...' [Оценить строку с помощью переключателя на C++ [дубликат]] (http://stackoverflow.com/a/16388594/5852567) –
@DIEGOCARRASCAL На самом деле, нет. Я не искал способ изменить, если еще можно переключиться. Я ищу метод, отличный от этих 2 (если есть), который мог бы как-то сделать это. –