LoginSignup
4
3

More than 5 years have passed since last update.

C++版のgetopt

Last updated at Posted at 2018-02-14

以下のサイトのcmdline.hを使ってみてください。
cmdline.hをインクルードするだけで使えます。
非常にシンプルに使えるのでおすすめです。

git: https://github.com/tanakh/cmdline
作者のサイト: http://d.hatena.ne.jp/tanakh/20091028

使い方

宣言

#include "cmdline.h"
int main(int argc, char **argv){
 ...
 cmdline::parser p;
 ...
}

コマンドラインオプションの登録

parser::add<T>を使って登録します。Tは受け取る値の型です。

第1引数 フルネームのコマンドライン・オプション
第2引数 一文字のコマンドライン・オプション
第3引数 コマンドライン・オプションの説明
(--helpのとき表示)
第4引数 必須オプションかどうか
第5引数 初期値
#include "cmdline.h"
int main(int argc, char **argv){
 ...
 cmdline::parser p;
 p.add<int>("number",'n',"particle number",false,10);
 ...
}

コマンドラインオプションのパース

parser::parse_checkを使います。

#include "cmdline.h"
int main(int argc, char **argv){
 ...
 cmdline::parser p;
 p.add<int>("number",'n',"particle number",false,10);
 p.parse_check(argc,argv);
 ...
}

コマンドラインオプション値の取得

parser::getを使います。

#include "cmdline.h"
int main(int argc, char **argv){
 ...
 cmdline::parser p;
 p.add<int>("number",'n',"particle number",false,10);
 p.parse_check(argc,argv);
 int n = p.get<int>("number"); 
 ...
}

コマンドライン引数の残り

rest()はコマンドライン引数の残りをstring配列として返します。

#include "cmdline.h"
int main(int argc, char **argv){
 ...
 cmdline::parser p;
 p.add<int>("number",'n',"particle number",false,10);
 p.parse_check(argc,argv);
 int n = p.get<int>("number"); 
 if(p.rest().size() > 0){
  hoge=parser.rest()[0];
 }
 ...
}
4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3