Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: работа switch case  (Прочитано 14371 раз)
0 Пользователей и 1 Гость смотрят эту тему.
r-lynx
Гость
« : 21-03-2005 14:49 » 

Подумалось:
Код:
switch(token)
{
  case "user":
вот это как оформить? С учетом того, что char *token не берет.
Записан
Anchorite
Гость
« Ответ #1 : 21-03-2005 15:14 » new

switch работет только с перечислимыми типами - enum и целые.
Для остальных приходится использовать if (..) {...} else if (...) {...} else {...}
Записан
npak
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #2 : 22-03-2005 08:04 » 

Для строк надо пользоваться if() и функциями сравнения строк (strcmp и компания)
Записан

UniTesK -- индустриальная технология надежного тестирования.

http://www.unitesk.com/ru/
tripout
Гость
« Ответ #3 : 17-11-2005 07:24 » 

Наткнулся... может, конечно, это уже и неактуально, но сам недавно с такой же проблемой столкнулся.
 if (..) {...} else if (...) {...} else {...} вдохновения не вызвали, учитывая, что строк, с которыми нужно сравнивать, было достаточно много.
Решение пришло в виде std::map<std::string,int> Улыбаюсь
Записан
r-lynx
Гость
« Ответ #4 : 17-11-2005 09:24 » 

А примерчик можно?
Записан
tripout
Гость
« Ответ #5 : 17-11-2005 15:00 » 

Можно Улыбаюсь

Код:
#include <string>
#include <map>

// так нам будет легче жить
typedef std::map<std::string,int> commands_type;
typedef commands_type::value_type value_type;

// заполняем мап возможными вариантами
commands_type commands;
commands.insert(value_type(std::string("слово0"),0));
commands.insert(value_type(std::string("слово1"),1));
commands.insert(value_type(std::string("слово2"),2));
commands.insert(value_type(std::string("слово3"),3));

// собственно поиск
commands_type::iterator command=commands.find(value_type(std::string("слово2"));
switch(command->second)
{
case 0:
...
break;
case 1:
...
break;
case 2:
// вот сюда мы и придём
...
break;
case 3:
...
break;
}
// вот, собственно, и всё.

Если что не так, прошу сильно не пинать, так как с STL я ещё только на этапе знакомства.

Кстати, может, есть у кого книжка Леена Аммерааля "STL для программистов С++" ? Давно ищу, но ни в бумажном, ни в электронном виде не встречал ещё. Книга достаточно редкая...
« Последнее редактирование: 17-11-2005 17:04 от tripout » Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines