Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.11.2010, 01:03   #1
Shub_Niggurath
 
Регистрация: 16.06.2010
Сообщений: 4
По умолчанию Реализация коммандной строки

Просьба подсказать как реализовать в программе интерфейс пользователя в виде коммандной строки (пользователь пишет комманду, в соотвествии с ней вызывается та или и иная функция в программе), думал сделать как(в общем виде):
while (coomand!="exit")
switch (command) {
case <здесь имя какой то комманды>: <имя какой то функции>
...
}
но проблема в том что switch не может принимать строку или символьный массив в качестве аргумента. Буду признателен за помощь.
Shub_Niggurath вне форума Ответить с цитированием
Старый 29.11.2010, 01:34   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

используйте strcmp
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 01.12.2010, 00:41   #3
Shub_Niggurath
 
Регистрация: 16.06.2010
Сообщений: 4
По умолчанию

Извиняюсь, но не могли бы вы подсказать как? я не очень понимаю как операция сравнения строк поможет мне в этой ситуации
Shub_Niggurath вне форума Ответить с цитированием
Старый 01.12.2010, 00:50   #4
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

Цитата:
Сообщение от Shub_Niggurath Посмотреть сообщение
я не очень понимаю как операция сравнения строк поможет мне в этой ситуации
А каким образом вы хотите понять что вам там пользователь ввёл! Полюбому что то сравнивать придётся!
Теперь что касаемо строк! В С++ это либо массив символов! Отсюда:
напрямую сравнивать строки в С++ нельзя! Отсюда вывод используйте strcmp
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума Ответить с цитированием
Старый 01.12.2010, 09:31   #5
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Цитата:
я не очень понимаю как операция сравнения строк поможет мне в этой ситуации
Поскольку ни char*, ни std::string в case запихать нельзя, то вместо switch придется использовать последовательные if - else if, ну а сравнивание строк внутри них - с помощью тех самых strcmp:
Код:
bool exit = false;
while (!exit) //Можно было бы и здесь сделать сравнение со строкой, но тогда сравнения производились бы и в теле цикла, и в его условии, т.е. в два раза чаще
{
if (strcmp(command, "command1") == 0)
 {
 //...
 }
else if (strcmp(command, "command2") == 0)
 {
 //...
 }
else if (strcmp(command, "exit") == 0)
 {
 exit = true;
 }
else
 {
 //Сообщение об ошибке
 }
}
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 02.12.2010, 00:46   #6
Shub_Niggurath
 
Регистрация: 16.06.2010
Сообщений: 4
По умолчанию

Благодарю за советы всех отписавшихся.
Shub_Niggurath вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
WSH: Как правильно передать параметры коммандной строки? voam JavaScript, Ajax 4 12.12.2009 15:16
С++. Строки. Собственная реализация стандартной функции itoa. |arch| Помощь студентам 0 25.11.2009 00:04
Параметры коммандной строки BaronTreep Общие вопросы Delphi 4 30.05.2009 21:27