Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
#1

switch для строк - C++

27.01.2014, 19:50. Просмотров 1186. Ответов 10
Метки нет (Все метки)

Есть ли возможность элегантно организовать работу со строками (проверка на равенство и выполнение нужного кода) так, чтобы синтаксис был максимально похож на switch? Подозреваю, что лямба-функции и их синтаксис для этого подходят как нельзя лучше, но от С11 меня тошнит С11 не знаю, поэтому не могли бы вы подкинуть ссылочку или пример реализации?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.01.2014, 19:50
Здравствуйте! Я подобрал для вас темы с ответами на вопрос switch для строк (C++):

Сделать программу на 50 строк через Switch - C++
Сделать программу на 50 строк через Switch

Switch для string - C++
Здравствуйте, есть код для дека #include <iostream> #include <map> using namespace std; class Deque{ static const int...

C++ switch для переменных char - C++
можно ли switch применять к переменным типа char или в чём тогда ошибка, подчёркивает строку case 'London':? #include <iostream> ...

switch case для double - C++
double weight_per_meter(double diameter) { switch ( diameter ) { case 3.0: return 0.052; case...

Перегрузка << switch для отображения enum - C++
есть перечисление жанров: enum Genre { no_genre, dram, pros, fantas, comedy, horr }; Используется в классе: class Book { ...

Оператор switch для двух выборов - C++
Можно ли в конструкции switch, где расположено два выбора 1 и 2. При вводе единицы происходит что-то а после ввода 2 отменяется эта...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Croessmah
Эксперт CЭксперт С++
13237 / 7509 / 847
Регистрация: 27.09.2012
Сообщений: 18,448
Записей в блоге: 3
Завершенные тесты: 1
27.01.2014, 20:19 #2
Как реализовать вызов "переменной" функции?

Добавлено через 21 секунду
Цитата Сообщение от nexen Посмотреть сообщение
С11
А как на счет C++11?
1
MrGluck
Модератор
Эксперт CЭксперт С++
7239 / 4407 / 642
Регистрация: 29.11.2010
Сообщений: 11,929
27.01.2014, 20:22 #3
Все проще:
http://www.cplusplus.com/reference/s...ing/operator=/
Можно задать как ассоцитативный массив, запихнув в map (unordered_map).
1
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
27.01.2014, 23:00  [ТС] #4
MrGluck, при чем тут строки не понял (в частности, ваша ссылка на "="), а про ассоциативный массив:
Croessmah,
Цитата Сообщение от nexen Посмотреть сообщение
чтобы синтаксис был максимально похож на switch
Т.е. мне нужно не просто сделать то же, что сделал бы switch, если бы умел работать со строками, мне нужно сделать синтаксис, похожий на switch, который смог бы работать со строками, т.е. вид примерно такой:
-принимаем объект для проверки (switch)
-блок проверки Х (case), где исходная строка сравнивается с некоторой другой строкой номер Х
-прерываем выполнение или переходим к следующему блоку (break или без него)
0
Kastaneda
Форумчанин
Эксперт С++
4653 / 2862 / 228
Регистрация: 12.12.2009
Сообщений: 7,271
Записей в блоге: 2
Завершенные тесты: 1
27.01.2014, 23:11 #5
Без С++11 красиво не получится. Не красово можно сделать хеш-функцию для строк и делать так
C++
1
2
3
4
5
6
switch (hash(myString)) {
case зараннее_подсчитанный_хеш1:
case зараннее_подсчитанный_хеш2:
...
case зараннее_подсчитанный_хешN:
}
1
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
28.01.2014, 07:32  [ТС] #6
Kastaneda, видимо я некорректно выразился. Я не знаю С++11, поэтому и прошу помочь сделать это красиво с синтаксисом, похожим на switch, с применением С++11
0
gray_fox
What a waste!
1520 / 1223 / 70
Регистрация: 21.04.2012
Сообщений: 2,560
Завершенные тесты: 3
28.01.2014, 14:34 #7
nexen, видимо типа такого (хэш-функция условная ), из всего C++11 только constexpr: http://ideone.com/0TkMpX
1
Kastaneda
Форумчанин
Эксперт С++
4653 / 2862 / 228
Регистрация: 12.12.2009
Сообщений: 7,271
Записей в блоге: 2
Завершенные тесты: 1
28.01.2014, 16:07 #8
gray_fox, имхо - красивее было бы user-defined literals использовать, особенно в case'ах.
1
nexen
28.01.2014, 17:38  [ТС]
  #9

Не по теме:

Kastaneda, оказывается, я ещё не про все фишки С++11 читал. Благодаря этой фишке поводов ненавидеть С++ стало больше

0
Jupiter
Каратель
Эксперт С++
6554 / 3975 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
28.01.2014, 19:52 #10
Цитата Сообщение от nexen Посмотреть сообщение
мне нужно не просто сделать то же, что сделал бы switch, если бы умел работать со строками, мне нужно сделать синтаксис, похожий на switch, который смог бы работать со строками, т.е. вид примерно такой:
а нафига?
0
MrGluck
28.01.2014, 21:01     switch для строк
  #11

Не по теме:

Цитата Сообщение от Jupiter Посмотреть сообщение
а нафига?
самобичевание же

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.01.2014, 21:01
Привет! Вот еще темы с ответами:

использование текстовой\длинной переменной для switch - C++
добрый день! Такой вот вопрос: есть цикл switch-case, но нужно, чтобы пользователь вводил команды, например: hepl и exit. Как...

Для чего нужны break и default в switch - C++
что означает строка break и default в codeblocks? пример: #include using namespace std; int main() {

Диапазон для Switch, именно в моем примере - C++
Предварительно полистал другие темы, но похожую на мою не нашел. Так что, буду благодарен, коль поможете. Задача: Дано целое число...

Статический хеш или switch-case/if-else для выбора - C++
Добрый день. Положим есть такой код:void parseByType(const QString &amp;data, const QString &amp;type) { if(type == &quot;integer&quot;) { ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
28.01.2014, 21:01
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru