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

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

Восстановить пароль Регистрация
 
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
27.01.2014, 19:50     switch для строк #1
Есть ли возможность элегантно организовать работу со строками (проверка на равенство и выполнение нужного кода) так, чтобы синтаксис был максимально похож на switch? Подозреваю, что лямба-функции и их синтаксис для этого подходят как нельзя лучше, но от С11 меня тошнит С11 не знаю, поэтому не могли бы вы подкинуть ссылочку или пример реализации?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11825 / 6804 / 769
Регистрация: 27.09.2012
Сообщений: 16,871
Записей в блоге: 2
Завершенные тесты: 1
27.01.2014, 20:19     switch для строк #2
Как реализовать вызов "переменной" функции?

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

Не по теме:

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

Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
28.01.2014, 19:52     switch для строк #10
Цитата Сообщение от nexen Посмотреть сообщение
мне нужно не просто сделать то же, что сделал бы switch, если бы умел работать со строками, мне нужно сделать синтаксис, похожий на switch, который смог бы работать со строками, т.е. вид примерно такой:
а нафига?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.01.2014, 21:01     switch для строк
Еще ссылки по теме:

C++ Диапазон для Switch, именно в моем примере
Оператор switch и case для нескольких константных выражений C++
Switch для string C++

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

Или воспользуйтесь поиском по форуму:
MrGluck
28.01.2014, 21:01     switch для строк
  #11

Не по теме:

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

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

Текущее время: 17:15. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru