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

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

Войти
Регистрация
Восстановить пароль
 
Vladimir.
155 / 155 / 10
Регистрация: 24.11.2009
Сообщений: 375
#1

Передача ключей и значений - C++

04.12.2010, 17:27. Просмотров 440. Ответов 3
Метки нет (Все метки)

Как корректно (в хорошем стиле) обрабатывать ключи и параметры передаваемые программе? Потому что ключей будет много (и хотелось бы что бы читающий код не сломал глаза.)

Если не затруднит на примере:
Bash
1
my_time -h Page
должно вывести справку, а
Bash
1
my_time -l
сответсвенно локальное время.
пример для редактирования
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include<iostream>
#include<time.h>
 
void show_help();
void show_time();
 
int main()
{
    show_help();
    show_time();
 
return 0;
}
 
void show_help(){
    std::cout<<"This is help about Page"<<std::endl;
}
 
void show_time(){
  time_t t = time(NULL);
  std::cout<<asctime(localtime(&t))<<std::endl;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.12.2010, 17:27
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Передача ключей и значений (C++):

Отсортировать введение записи по возрастанию значений ключей - C++
Уважаемые форумчане, нужна ваша помощь в решении задачи: С клавиатуры ввести набор структур с полями &quot;Ключ&quot; и &quot;Данные&quot; (ключ-целое...

Передача значений в функцию C++ - C++
Добрый вечер. Возникла такая проблема с лабой. Не могу корректно передать значение &quot;x&quot; к выводу в консоль. Не знаю как продолжить лабу. ...

Передача значений из txt - C++
Есть файлик txt, пусть в нем написано к примеру A=один B=два C=три слева английская аббревиатура, после равно русские...

Передача значений функций - C++
извините конечно за дурацкий вопрос, не нашёл, думаю, может вы поможете... задача такова: мне надо например сделать 3 разных функции...

Передача значений переменных функциями - C++
Подскажите пожалуйста, как реализовать эту функцию с помощью указателя (а не ссылки). int clearstr(student&amp; a) { delete a.pi; ...

Передача значений из двумерного массива в функцию - C++
Добрый день всем! Помогите девушке разобраться! Я пишу лабораторные по Си. Осталась последняя лабораторная по решению системы...

3
accept
4822 / 3243 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
04.12.2010, 22:57 #2
boost :: program_options
man 3 getopt

самодельные
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
struct addrforms {
    char domain[MAXDOMAIN];
    char ip[MAXIP];
};
 
struct bitflags {
    unsigned int timeout : 1;
    unsigned int quiet : 1;
};
 
struct options {
    char *prog;
    
    struct addrforms address;
    long port;
    
    char ifname[MAXFILEPATH];
    char ofname[MAXFILEPATH];
    
    struct bitflags flags;
    int timeout;
};
 
int SetOptions(struct options *p, int argc, char *argv[]);
C
1
2
3
4
5
6
7
8
9
10
11
12
13
/* SearchForArg:  search arg in argv */
int SearchForArg(const char ***p, const char *arg,
                 const char **argv)
{
    while (*argv) {
        if (strcmp(arg, *argv) == 0) {
            *p = argv;
            return 0;
        }    
        argv++;
    }
    return -1;
}
1
Vladimir.
155 / 155 / 10
Регистрация: 24.11.2009
Сообщений: 375
04.12.2010, 23:55  [ТС] #3
Как раз то, что нужно. Общий принцип ясен, спасибо.

Не совсем очевиден порядок извлечения значений, вложите пожалуйста участок кода из SetOptions() в котором происходит получение, например ifname

то есть не понятно зачем используеться ***p, а не **p.

Добавлено через 15 минут
Всё - разобрался, ещё раз большое спасибо.
0
accept
4822 / 3243 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
05.12.2010, 02:58 #4
поиск типа ./prog abc -t 10 def
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
    char **argptr;
 
...
 
    /* search for -t nsec */
    
    retval = SearchForArg(
        (const char ***) &argptr,
        "-t",
        (const char **) argv
    );
    
    if (retval == 0) {
    
        tmp.flags.timeout = 1;
        
        tmp.timeout = atoi(argptr[1]);
        
        assert(tmp.timeout >= 0 && "timeout 0, 1, 2 ... ");
    
    }
    
    
    /* search for -i file */
    
    retval = SearchForArg(
        (const char ***) &argptr,
        "-i",
        (const char **) argv
    );
    
    if (retval == 0)
        strcpy(tmp.ifname, argptr[1]);
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.12.2010, 02:58
Привет! Вот еще темы с ответами:

Передача значений матрицы из Mathcad в dev c++ и обратно - C++
Здравствуйте! помогите узнать как присвоить значения матрицы(2 на 2 допустим) к переменным, значения которые находится в txt файле. Сама...

Передача значений функций в главную программу, вызов функций - C++
Здравствуйте! Скорее всего, неправильно передаю значения функциям и в главную программу. Помогите найти ошибку! В итоге выводит...

Генератор ключей - C++
Здраствуйте! помогите пожалуйста создать генератор ключей,сколько это будет стоить?позже могу скинуть программу для которой нужен...

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


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

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

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