как разобрать несколько аргументов используя аргументы командной строки - PullRequest
1 голос
/ 29 апреля 2011

Я пишу утилиту командной строки, в которой я хочу проанализировать несколько аргументов: сейчас я не читаю данные с адреса (поэтому, пожалуйста, не запутайтесь в -addr);Моя основная задача - спроектировать структуру так, чтобы я мог разобрать несколько аргументов следующим образом.

filename read -addr value -addr2 value2 -addrN valueN -length value -range value -length2 value2 -lengthN valueN -width value -width2 value2 -widthN valueN

максимальное значение N может быть 64, а минимальное - 1.

Пожалуйста, дайтенекоторые ценные предложения, чтобы я мог это сделать.Спасибо

Ответы [ 2 ]

3 голосов
/ 29 апреля 2011

рассмотрите возможность использования библиотеки Getopt или некоторых ее модификаций, это может сделать вашу жизнь проще.

http://www.boost.org/doc/libs/1_41_0/doc/html/program_options.html

1 голос
/ 29 апреля 2011

Типичный main() прототип выглядит так:

int main(int argc, char** argv) {
   // stuff
}

Когда ваша программа выполняется из командной строки, argc будет общим количеством ваших аргументов, плюс один для имени самой программы; и вы можете думать о argv как о массиве строк, содержащих аргументы.

Зная argc, анализ списка аргументов должен быть легким:)

Редактировать: краткий пример, на всякий случай.

int main(int argc, char** argv) {
    printf("%d\n", argc);
}

Тогда на вашем cl:

./program asd asd asd
4

argv [0] это "программа", argv [1] это "asd" и т. Д.

...