Форум программистов, компьютерный форум, киберфорум
C++ Qt
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.97/35: Рейтинг темы: голосов - 35, средняя оценка - 4.97
 Аватар для nullpointer
48 / 48 / 14
Регистрация: 30.03.2009
Сообщений: 523

Избавиться от большого количества else-if

28.07.2015, 12:05. Показов 7592. Ответов 40
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет. Есть необходимость сравнения одной строки с другими. Использую конструкцию if-else if. Но таких сравнений довольно много и такое количество if'ов мне не нравится.
C++ (Qt)
1
2
3
4
if(str == st1){...}
else if(str == st2){...}
...
else if(str == stn){...}
Хотелось бы заменить это все дело на switch-case, но он естественно не работает с типом QString. Что посоветуете в данной ситуации? Я пока что придумал только так:
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
QStringList list;
list << st1 << st2 << ... << stn;
 
switch(list.indexOf(str)
{
   case 0: ...
   case 1: ...
    ...
   case n: ...
}
Какие будут ваши советы?

P.S. Форматирование может хромать, т.к. пишу с телефона.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.07.2015, 12:05
Ответы с готовыми решениями:

Избавиться от большого количества обработчиков
Господа, есть такая проблема... Имеется главный index.php файл, он же основной контроллер. Он, как и полагается, разбирает урлик,...

Как избавиться от переполнения памяти при очистке большого html файла?
Всем привет. Имею текстовый фаил объемом 100 мегабайт. В html коде. Там большой набор статичтических данных. Начинаю его чистить выдает...

Создание большого количества переменных
Как создать много переменных с именами типа var1 var2 var3 var4 var5? Чтобы имена одинаковые, но цифры в конце разные.

40
0 / 0 / 0
Регистрация: 08.07.2015
Сообщений: 18
20.01.2016, 11:03
Студворк — интернет-сервис помощи студентам
Универсальных решений на все случаи жизни нет. Конструкция switch-case удобна и наглядна во многих случаях. А возможность использования строк расширяет спектр ее применения.
"Много" -это понятие относительное... (понятно что если длинна строки ограничена 9 символами - то о десятках тысяч сравнений речь не идет).
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
20.01.2016, 11:03

Хранение большого количества файлов
Есть свой видео-хостинг типа ютуба, и вот такой вопрос возник. Как мне организовать хранение файлов в файловой системе так, чтоб потом...

Считывание большого количества данных
Есть такой код: int main() { int n; FILE *fin fin = fopen(&quot;b.in&quot;, &quot;r&quot;); fscanf(fin, &quot;%d %d %d %d %d %d %d %d %d %d %d %d %d %d...

Удаление большого количества строк
Помогите начинающей, подскажите, пожалуйста, как избежать ошибки при удалении тысяч строк? Выдается 'Timeout Expired'. Сотни строк...

Чтение большого количества файлов
Всем привет. Возможно ли прочитать сразу огромное количество файлов? cat test/123/*/*.log - выдает сообщение о превышении количества...

Массив из большого количества кнопок
Добрый день! Как понятно из названия, хочу создать массив из большого количества кнопок, 100 например. Нагуглила вот что: int...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
41
Ответ Создать тему
Новые блоги и статьи
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
Создание формы заимствованного документа
Maks 03.08.2026
Задача: Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также табличная часть со следующими реквизитами: - Расчетный счет покупателя. . .
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача: В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru