2014-05-22 15 views
5

In che modo boost::program_options analizza o gestisce un input quando sono consentite entrambe le opzioni multitoken e posizionali?Opzioni del programma di potenziamento: opzioni di posizione e multitoken

Ad esempio:

./app.sample pos1 --multitokenoption a b c d pos2 

Come si fa a sapere quando un impulso multitokenoption finiture e un'opzione posizionale comincia?

Ovviamente, il comportamento più logico consentito è che un'opzione multitoken deve essere presente come ultimo parametro, proprio come accade con gli argomenti predefiniti nei parametri di funzione, ma la documentazione non dice nulla al riguardo.

+1

Perché pensi che il 'multitokenoption' finirà? Mangerà tutti i rimanenti token. Se è richiesto "pos2", verrà generata un'eccezione. – HEKTO

risposta

4

Ci sono tre vie per segnare la fine dei valori per un'opzione multitoken:

  1. Un'altra opzione:

    ./app.sample pos1 --multitokenoption a b c d --regularoption v pos2 
    
  2. Nome opzione per l'opzione di posizione (quasi il # 1):

    ./app.sample pos1 --multitokenoption a b c d --pos2 pos2 
    
  3. doppio trattino:

    ./app.sample pos1 --multitokenoption a b c d -- pos2 
    

In caso contrario, l'opzione multi-token non sapranno dove fermarsi - niente di magico.

+1

Ma boost :: program_option non ha supporto nativo per tale doppio trattino, se non sbaglio. –

+2

Funziona per me. Boost = 1.55.0, Compiler = GCC 4.8.1, OS = Xubuntu 3.11.10.3 – HEKTO