スポンサーリンク

TCLAPでC++でコマンドライン引数を解析

https://github.com/ufz/tclap

からもダウンロードできる。そこにMIT Licenseと書いてあるのでライセンスはかなり緩い。

ビルドしなくても使えるのでその点は良いが、インクルードがヘッダファイル一つでも関連ファイルが多いので追加のインクルードディレクトリを指定しなければいけない。

#include <iostream>

//https://tclap.sourceforge.net/

#include <tclap/CmdLine.h>

int main(int argc, char** argv) {
  int val_int;
  std::string val_string;

  // Define the command line object
  TCLAP::CmdLine cmd(
    "test program"    // アプリケーションの説明
    , ' '             // コマンドライン引数の区切り文字
    , "0.1"           // ツールのバージョン
    , true            // -hで表示されるヘルプを作成する
  );

  TCLAP::ValueArg<int> arg_i(
      "n"                           // 引数指定方法 -n 123 のように記述
    , "number"                      // 引数指定方法 --number のように記述
    , "count of data"               // ヘルプに表示する説明
    , true                          // 必須項目であることを示す
    , 0                             // 初期値
    , "integer"                     // ヘルプに表示するこのオプションのデータ型
  );
  cmd.add(arg_i);

  TCLAP::ValueArg<std::string> arg_s(
      "t"                           // 引数指定方法 -t abc のように記述
    , "text"                        // 引数指定方法 --text のように記述
    , "text data"                   // ヘルプに表示する説明
    , false                         // 必須項目であることを示す
    , "void"                        // 初期値
    , "text"                     // ヘルプに表示するこのオプションのデータ型
  );
  cmd.add(arg_s);
  // コマンドライン引数を解釈する
  cmd.parse(argc, argv);

  // 解釈した値を取得する
  val_int = arg_i.getValue();
  val_string = arg_s.getValue();

  // 入力されたオプションを確認
  std::cout << "input : " << val_int << std::endl;
  std::cout << "input : " << val_string << std::endl;

  return 0;
}

実行例1 引数を指定して実行してみる。

app.exe -n 123
input : 123
input : void

実行例2 ヘルプを作成しているので、-hで使い方表示ができるようになっている。

app.exe -h

USAGE:

   app  [-h] [--version] [-t <text>] -n <integer>


Where:

   -n <integer>,  --number <integer>
     (required) count of data

   -t <text>,  --text <text>
     text data

   --,  --ignore_rest
     Ignores the rest of the labeled arguments following this flag.

   --version
     Displays version information and exits.

   -h,  --help
     Displays usage information and exits.

   test program

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)


この記事のトラックバックURL: