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

C++

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.73
taras atavin
3570 / 1753 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
#1

Как лучше делать командную строку? - C++

14.04.2011, 08:50. Просмотров 1425. Ответов 11
Метки нет (Все метки)

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

Как в windows сделать динамическую библиотеку из файлов .cpp через командную строку ? - C++
Здраствуйте, вопрос состоит в следующем, как у Виндовс через командную строку сделать динамеческую библиотеку из файлов .cpp. ...

Закрытие программ через командную строку - C++
помогите, вирус поймал, блочит гугл, в диспетчер захожу, при наведении на процессы, процессы исчезают, как через командную строку закрыть...

Сборка проекта через командную строку - C++ Builder
Доброе время суток всем, подскажите как можно собрать уже готовый проект(с++builder XE3) через командную строку. В идеале хотелось бы...

Управление программой через командную строку - C++ Builder
Доброго времени суток. Есть программа на с++ в Builder 6 взятая тут: ...

Запуск програмки через командную строку - C++ Builder
Сразу говорю, что Builder'ом не дружу, и с с++ не очень, но писать надо, потому у меня несколько вопросов, надеюсь кто-нить поможет)) ...

Запуск формы через командную строку с параметрами - C++ Builder
Знаю, что в консоли можно получить данные из командной строки int main(int argc, char *argv) { // Инструкции return 0; } ...

11
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
14.04.2011, 09:28 #2
taras atavin, Какой-нить boost::optional к примеру
0
taras atavin
3570 / 1753 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
14.04.2011, 10:42  [ТС] #3
А без буста?

Добавлено через 6 минут
Виндузяче-гуёвое меню делается свичем, но там пунктам меню соостветсвуют интовые константы, а у меня то будут строки. Как можно их поудобнее сравнить?
0
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
14.04.2011, 11:16 #4
taras atavin, Прям сравнить? Только сравнением строк...
0
taras atavin
3570 / 1753 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
14.04.2011, 11:57  [ТС] #5
Сергей Валерьевич предложил таблицу команд. Примем эту идею, пусть будет массив структур. Ондо поле каждой смтруктуры - текст команды. Команда набрана с клавы, нажата кочерга, читаем команду в стоковую переменную, потом в цикле её сравнимаем. Это толкьо один иф. Нашли нужную структуру, второе её поле - указаетль на функцию, прееходим по этому указетелю. Пойдёт, или будут идеи ещё лучше? И как лучше иницировать массив?
0
silent_1991
Эксперт С++
4986 / 3043 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
14.04.2011, 12:40 #6
taras atavin, то, что вы описали - давно известный и достаточно действенный метод. Я бы делал именно так. Реализация меню таким образом занимает три строчки)))
0
taras atavin
3570 / 1753 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
14.04.2011, 12:43  [ТС] #7
Цитата Сообщение от silent_1991 Посмотреть сообщение
давно известный и достаточно действенный метод.
Тогда попрошу ссылку на пример. Я не притендую на новизну, просто хочу посмотреть существующий образец, чтоб лучше понять данный метод.
0
silent_1991
Эксперт С++
4986 / 3043 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
14.04.2011, 12:46 #8
taras atavin, это вы к тому, что не верите мне, что это известный метод? Тогда извините, пруф не дам, можете сами поискать. Или просто не поняли, как это реализовать? Тогда сейчас накидаю примерчик...
0
taras atavin
3570 / 1753 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
14.04.2011, 12:50  [ТС] #9
Цитата Сообщение от silent_1991 Посмотреть сообщение
taras atavin, это вы к тому, что не верите мне, что это известный метод?
Это я к тому, что посмотрев существующую реализацию, его будет проще повторить. Нового я здесь ничего не изобрету, это точно. Но потратить даже с подсказкой на воспроизведение больше времени, чем было действительно необходимо изобретателю данного метода - запросто.
0
silent_1991
Эксперт С++
4986 / 3043 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
14.04.2011, 13:01 #10
Что-то вроде:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#include <iostream>
#include <string>
 
typedef void (*pfunc_t)();
 
struct Cmds
{
    std::string cmd;
    pfunc_t imp;
};
 
void hello();
void how_are_you();
void bye();
 
int main()
{
    const size_t cmds_number = 3;
    std::string cmd;
    Cmds cmds[cmds_number] =
    {
        {"Hello!", hello},
        {"How are you?", how_are_you},
        {"Bye", bye}
    };
 
    do
    {
        std::cout << ">: ";
        std::getline(std::cin, cmd);
 
        for (size_t i = 0; i < cmds_number; ++i)
            if (cmds[i].cmd == cmd)
                cmds[i].imp();
    }
    while (cmd != "Bye");
 
    return 0;
}
 
void hello()
{
    std::cout << "Hello!" << std::endl;
}
 
void how_are_you()
{
    std::cout << "Fine!" << std::endl;
}
void bye()
{
    std::cout << "Bye!" << std::endl;
}
1
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1306 / 1221 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
14.04.2011, 16:37 #11
Если команд много, то map будет эффективнее.
0
silent_1991
Эксперт С++
4986 / 3043 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
14.04.2011, 16:41 #12
Deviaphan, полностью согласен. Всего лишь показал общий принцип)))
0
14.04.2011, 16:41
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.04.2011, 16:41
Привет! Вот еще темы с ответами:

Компиляция через командную строку в RAD Studio - C++ Builder
Здравствуйте. Образовался вопрос. Можно ли как-нибудь генерировать файл через Windows CMD? Сейчас использую RAD Studio. И если...

Как делать кнопки по картинкам и как изменить иконку самой проги? - C++ Builder
Вернее 2 вещи... Во-первых как делать кнопки по картинкам... ну типа как формы мона там круглые, по контурам картинка и т.д. Так с помощью...

Не выключается компьютер даже через командную строку что делать? - Windows XP
Помогите пожалуйста. Компьютер вообще не выключается. Пробовала разными способами ничего не вышло. Заранее спасибо

Как передать строку из слов и пробелов через командную строку? - Delphi
Я сделал запуск проги через командную строку. Теперь считываю параметры. Ничего сложного. Один только вопрос: как запустить строку как 1...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

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