2013-07-25 5 views
6

Der Boost-Option Parser erlaubt es, ein Variable zuweisen den Optionswert zu speichern, anstatt die so_long["typing"].as<bool>() Art der Verwendung:Wie speichert man automatisch den Wert eines einfachen Flags in eine Variable?

bool flag_value; 
entries.add_options() 
("flag", value<bool>(&flag_value), "a simple flag value"); 
...... 
cout<<"flag value is: "<<flag_value<<endl; 

Allerdings ist die oben genannte Option Erklärung eine einfache Flag-Option nicht erstellen. Sie müssen tatsächlich etwas als Wert eingeben (--flag true | false | on | off | ja | nein | 1 | 0), was nicht das ist, was ich will.

Also, gibt es eine Möglichkeit, das Ergebnis in einem booleschen Wert zu speichern, und behalten Sie die Option als eine einfache Flagge?

Antwort

10

eine Option zu haben, ohne Wert (Gang bedeutet es true eingestellt ist) Sie es wie this schaffen sollte:

options_description desc; 
desc.add_options() 
    ("help", "produce help message") 

verwenden Anmelder für eine solche Option können Sie die following type als Semantik verwenden können:

es kann true oder false Werte haben und kein Wert kann explizit für diese Option aus der Befehlszeile genommen werden. Wenn die Option übergeben wird, lautet der Wert true. Wenn nicht bestanden - der Wert ist false.

+3

kein Kommentar zu downvote? – Riga

+1

Vielleicht dachte der Downvoter Sie [eine andere Antwort von Ihnen kopiert] (http://stackoverflow.com/a/7277180/591064)? Hier ist ein +1, um es auszugleichen, Ihre Antwort hat mir geholfen. – ixe013

Verwandte Themen