Sto sviluppando un aggiornamento in un programma esistente. Sto sostituendo Posix's getopt_long() con boost :: program_options. Ma il mio lavoro non funziona come avrei dovuto: voglio avere argomenti leggere come:C++ boost :: program_options lettura argomenti compatibili con getopt_long
-server=www.example.com
-c config.txt
stavo cercando molte possibilità da boost :: :: program_options command_line_style, ma non riesco a trovare le combinazioni che avrebbe dare un comportamento uguale a getopt_long.
ho scoperto che per gli argomenti:
-server=www.example.com
ho bisogno di bandiere:
command_line_style::allow_long_disguise | command_line_style::long_allow_adjacent
ma ho problemi con le bandiere fondatori per:
-c config.txt
ho scoperto che le bandiere:
command_line_style::allow_short | command_line_style::allow_dash_for_short | command_line_style::short_allow_next
dammi quasi quello che voglio. Quasi perché:
ProgramOptionsParserTest.cpp:107: Failure
Value of: params.config
Actual: " config.txt"
Expected: expectedParams.config
Which is: "config.txt"
quindi, dopo aver usato boost :: algorithm :: trim() sarà come voglio.
Quindi la mia domanda è: è possibile gestire argomenti come -c config.txt con boost :: program_options ma senza boost :: algorithm :: trim()?
EDIT Ho notato che i flag sopra non funzionano con argomenti non registrati. opzioni che ho registrati:
programOptionsDescription.add_options()
("help,h", "display help message")
("config,c", value<std::string>(), "use configfile")
("server,s", value<std::string>(), "server")
("ipport,p", value<uint16_t>(), "server port");
ma quando ho utilizzare le opzioni non registrati (sì, ho basic_command_line_parser :: allow_unregistered()):
-calibration=something
vedo:
the argument ('alibration=something') for option '-config' is invalid
mio domanda dopo edizione: come gestire gli argomenti che funzionano con getopt_long con boost :: program_options?
Immagino che questa risposta non sia correlata. La domanda è chiaramente finalizzata all'analisi delle opzioni del programma (posix getopt() ecc.) – user23573