Sto utilizzando boost :: program_options per specificare gli argomenti della mia applicazione C++. C'è un modo per specificare che un argomento è richiesto da un insieme di alternative?Il supporto boost :: program_options richiede una di una serie di alternative?
<application> [--one int-value1 | --two string-value2 | --three]
In precedenza, l'utente deve passare esattamente una delle alternative: --one
, --two
o --three
.
ho potuto farlo manualmente, ma spero v'è un meccanismo incorporato invece di questo:
#include <boost/program_options.hpp>
namespace po = boost::program_options;
int main(int argc, char *argv[]) {
po::options_description options;
int band;
std::string titles_path;
options.add_options()
("one", po::value<int>(&band)->default_value(1))
("two", po::value<std::string>(&titles_path))
("three");
po::variables_map vm;
po::store(po::parse_command_line(argc, argv, options), vm);
if (1 != (vm.count("one") + vm.count("two") + vm.count("three"))) {
std::cerr << options << std::endl;
return -11;
}
return 0;
}
C'è un modo migliore per fare questo con le opzioni di spinta?
C'è un modo per ottenere un messaggio di aiuto/utilizzo migliore? Come in una solita app unix e come voleva WilliamKF: [--one int-value1 | --two string-value2 | --tre]. Quindi è almeno visibile nell'aiuto cosa dovrebbe essere passato. –
Ela782
Non che io sappia. – ypnos