Мне нужно создать эквивалент оператора switch/case для строк в C++ с Qt. Я считаю, что самый простой способ что-то вроде этого (псевдокод)Как написать инструкцию switch для строк в Qt?
enum colours { red, green, blue };
QString array[] colour_names = { "red", "green", "blue" };
switch (color_names[user_string]) {
case red: answer="Chose red";
case green: answer="Chose green";
case blue: answer="Chose blue";
other: answer="Invalid choice";
}
Но это не воспользоваться некоторыми из особенностей Qt. Я читал о QStringList (чтобы найти позицию строки в списке строк) и std: map (см. How to easily map c++ enums to strings, что я не совсем понимаю).
Есть ли лучший способ переключаться на строки?
не хотите использовать перечисление? – headsvk
Вы не можете использовать строки в инструкции switch. Вы не сказали нам, почему вам нужно заявление о swic. Наиболее простым решением для поиска на основе строки является использование карты. В Qt это означало бы использование QMap. –
user2672165
Вы должны использовать llvm :: StringSwitch: http://llvm.org/docs/doxygen/html/StringSwitch_8h_source.html –