Russian Qt Forum
Май 21, 2024, 19:02 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: [boost_program_options] Переваривает неполные опции командной строки  (Прочитано 5325 раз)
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« : Июнь 20, 2016, 13:36 »

Всем привет.

Использую boost_program_options для парсинга параметров командной строки:

Код
C++ (Qt)
   ...
   ...
       boost::program_options::options_description general_desc("General options");
       general_desc.add_options()
               ...
               ...
               ;
   ...
   ...
       boost::program_options::options_description additional_desc("Additional options");
       additional_desc.add_options()
               ...
               ...
               ("list-commands", "Show available commands with their description.")
               ;
               ...
   ...
   ...
       boost::program_options::options_description desc;
       desc.add(general_desc);
       desc.add(additional_desc);
 
       boost::program_options::store(boost::program_options::parse_command_line(argc, argv, desc), vm);
 
       if (vm.count("help")) {
           // do something
       } else if (vm.count("list-commands")) {
           // print available commands
       } else {
           //  do something
       }
 

где использую дополнительный параметр --list-commands для вывода на экран список неких команд.

Так вот, если писать неполную опцию, типа --list-c, --list-co - то оно интерпретируется как --list-commands  Шокированный.. WTF?

Так должно быть, или это баг буста (1.61.0) ? Или фича или я что-то не так делаю?
« Последнее редактирование: Июнь 20, 2016, 13:39 от kuzulis » Записан

ArchLinux x86_64 / Win10 64 bit
Bepec
Гость
« Ответ #1 : Июнь 20, 2016, 15:13 »

Вроде бы фича. Если нет других совпадений "list-c", будет вызвано единственное.
Если же будет несколько, то ничего не запустит Улыбающийся
Записан
qate
Супер
******
Offline Offline

Сообщений: 1175


Просмотр профиля
« Ответ #2 : Июнь 20, 2016, 15:40 »

а чем  boost_program_option  будет лучше QCoreApplication::arguments() ?
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #3 : Июнь 20, 2016, 16:18 »

Цитата: qate
а чем  boost_program_option  будет лучше QCoreApplication::arguments()

1. Тем что в бусте оно автоматом обрабатывается и проверяется на корректные значения и т.д. и.т.п.
2. QCoreApplication::arguments()  - это просто список аргументов.. может быть, имелось ввиду QCommandLineParser/Option ?
3. Я не использую Qt (это самое главное)  Подмигивающий Но если используется Qt - то QCommandLineParser/Option в самый раз.

Цитата: Bepec
Если же будет несколько, то ничего не запустит

Ну да, ругается что опция неизвестна... Ладно, будем считать фичей (мы доки не читаем, а сразу кодим Улыбающийся)
« Последнее редактирование: Июнь 20, 2016, 16:21 от kuzulis » Записан

ArchLinux x86_64 / Win10 64 bit
qate
Супер
******
Offline Offline

Сообщений: 1175


Просмотр профиля
« Ответ #4 : Июнь 20, 2016, 20:11 »

1.,2. я использую в своих поделках просто QCoreApplication::arguments(), пока хватает. QCommandLineParser мне видится пока излишним
3. неожиданно ), ведь qt лучше )

Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #5 : Июнь 21, 2016, 08:47 »

Цитировать
3. неожиданно ), ведь qt лучше )

Бесспорно....  Смеющийся но если речь идет о консольной утилитке, то тянуть Qt избыточно... Я ее слинковал с статическим рантаймом и она у меня ~500 KB... и я даже боюсь представить во скок это мне обошлось бы геморроя при использовании Qt..  Показает язык
Записан

ArchLinux x86_64 / Win10 64 bit
qate
Супер
******
Offline Offline

Сообщений: 1175


Просмотр профиля
« Ответ #6 : Июнь 21, 2016, 10:17 »

но если речь идет о консольной утилитке, то тянуть Qt избыточно...

разрабатывать удобнее на qt, поэтому и для консольного приложения я выберу qt, увеличенный размер будет несущественным минусом
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.076 секунд. Запросов: 22.