2013年12月20日金曜日

C++: Boost.ProgramOptions での配列的入力とその取り扱い方


Boost.ProgramOptionsは1つのintなりboolなりstd::stringなりを受け取るのに便利に使ってたんだけど、ふと、
  • 「配列っぽいのとか扱いたいな」
  • 「std::stringで受け取ってパーサー書くのもめんどくさいBoost.ProgramOptionsにもしかしてそういう機能あったりしたっけ?」
などと思ったら何やらあるっぽい。
オプションのdescription定義で、

  using namespace boost::program_options;
  options_description desc("おぷしょん");
  description.add_options()
    ("hoge,h", value<std::vector<int>>()->multitoken(), "hogehoge")
    ;

とかしておいて、取得する際は、

  auto vm = option(ac, av);
  auto values = vm["hoge"].as<std::vector<int>>

とかするだけで、コマンドラインでは
app -h 1 0 -2
とすると valuesに{1,0,-2} の入った std::vector<int> が得られる。手軽で良いです(*´ω`*)

0 件のコメント:

コメントを投稿