web-dev-qa-db-ja.com

boost :: program_optionsを使用してオプションのフラグを受け入れる方法は?

オプションのフラグを実装する必要があります。たとえば、-f/--flag。これはフラグであるため、関連付けられた値はありません。私のコードでは、フラグが設定されているかどうかを知る必要があるだけです。 boost :: program_optionsを使用してこれを行う適切な方法は何ですか?

19
becko

これを行う便利な方法は、bool_switch機能を使用することです。

bool flag = false;

namespace po = boost::program_options;

po::options_description desc("options");

desc.add_options()
  ("flag,f", po::bool_switch(&flag), "description");
po::variables_map vm;
//store & notify

if (flag) {
  // do stuff
}

これは、文字列を手動でチェックするよりも安全です(文字列は定義全体で1回だけ使用されます)。

29
sshannin

通常どおり使用しますが、値はありません。

boost::program_options::options_description od("allowed options");
od.add_options()
    ("flag,f", "description");

po::variables_map vm;
// store/ notify vm
if (vm.count("flag")) {
    // flag is set
}

例として、 はじめに オプションhelpを参照してください。

6
user1810087