2013-07-25 24 views
6

opcja doładowania parser pozwala na przypisanie zmiennej do przechowywania wartości opcji, zamiast używania drogę so_long["typing"].as<bool>():jak automatycznie zapisać wartość prostej flagi w zmiennej?

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

Jednakże powyższa deklaracja opcja nie tworzy prostą opcję flagi. W rzeczywistości wymaga wpisania czegoś jako wartości (--flag true | false | on | off | yes | no | 1 | 0), co nie jest tym, czego chcę.

Czy istnieje sposób przechowywania wyniku wewnątrz wartości boolowskiej, a nadal zachować opcję jako zwykłą flagę?

Odpowiedz

10

Aby mieć możliwość bez wartości (mijania oznacza, że ​​jest ustawiony true) należy utworzyć go jak this:

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

Aby korzystać powiadamiający o takiej opcji można użyć following type jako semantyki:

boost::program_options::bool_switch() 

może mieć wartości i nie można jednoznacznie podjąć żadnej wartości dla tej opcji z wiersza poleceń. Jeśli opcja zostanie przekazana, wówczas wartość to true. Jeśli nie przekazano - wartość wynosi false.

+3

bez komentarza na dół? – Riga

+1

Może downwizer pomyślał, że [duplikowałeś inną odpowiedź] (http://stackoverflow.com/a/7277180/591064)? Oto +1, aby wyrównać, Twoja odpowiedź mi pomogła. – ixe013