17

コマンドライン引数からユーザーの入力を読み取るために、boost::program_optionsを使用しています。それは非常にうまく機能し、役立つ使用法メッセージを出力し、入力を適切に検証することができます。ただし、デフォルトでは、長いオプション名は二重ダッシュの後に来る必要が--my_long_optionあり、短いオプションは単一のダッシュの後に来て、単一の文字でなければなりません-m.

どちらにも方法はありますか...

  • 単一の-?の後に長いオプションを許可する
  • 短いオプションに複数の文字を含めることを許可しますか?

したがって、次のようなコマンドラインを使用できます

./a.out -myopt1 foo -myopt2 bar

2 つの可能性は同じ効果を持つはずですが、プログラミングの観点からは最初の方が優れています。boost::program_options::command_line_styleを見てみましたが、必要なことを実行できるようには見えません。

ありがとう

編集:以下の受け入れられた回答にさらに、そのスタイルを使用するには、次のコードを追加する必要があります(ブーストドキュメントの命名規則に従って)

po::store(
    po::command_line_parser(ac,av)
        .options(desc)
        .style(
            po::command_line_style::unix_style
          | po::command_line_style::allow_long_disguise)
        .run(),
    vm);
4

1 に答える 1

26

定義上、短いオプションは1文字だけです。彼らがもっと持っていれば、彼らは長い選択肢になるでしょう。

長いオプションを1つのダッシュで開始できるようにするには、リンク先のドキュメントページで説明されているようにallow_long_disguise、コマンドラインスタイルを含めます。

短いオプションと同じ文字で長いオプションを導入することが可能です。allow_long_disguiseを参照してください。

于 2011-08-29T17:54:38.390 に答える