2012-07-30 1 views
9

sto usando boost :: program_options per implementare un programma di utilità della riga di comando con la seguente sintassi:boost :: program_options: Come specificare un comando senza "-" o "-"

myutil command [--in file_name] [---out file_name] 

dove ' comando' è obbligatorio, ed è uno dei seguenti:

read | write | find | version | help 

la cosa è che 'comando' non dovrebbe richiedere -- o - e non ho trovato il modo di farlo con boost :: program_options.

risposta

10

Le opzioni della riga di comando che non hanno un nome sono chiamati positional options:

po::positional_options_description p; 
p.add("command", -1); 
po::variables_map vm; 
po::store(po::command_line_parser(ac, av). 
      options(desc).positional(p).run(), vm); 
+12

Sì, questo funziona. Un importante avvertimento: l'opzione di posizione deve essere aggiunto come opzione normale così: 'po :: positional_options_description p;' ("comando", -1) 'p.add;' ' boost :: program_options :: options_description disc; '' desc.add_options() ("comando", "read | Scrivi | ricerca | versione | help"); '' po :: variables_map vm; '' po :: store (po :: command_line_parser (ac, av) .options (desc) .positional (p) .run(), vm); ' –