クラス langedge::GetOpt

コマンドライン引数を解析するクラス. [詳細]

#include <getopt.hpp>

すべてのメンバ一覧

Public メソッド

 GetOpt (int argc, const char *const *argv, const char *shortopts, const char *longopts=NULL)
 コンストラクタ.
 ~GetOpt ()
 デストラクタ.
int getOptsNum () const
 オプション指定の数を得る.
bool getopt (const char *opt, std::string &value) const
 オプション指定の有無のチェックとオプション引数取得.
bool getopt (const char *opt) const
 オプション指定の有無をチェックする
bool getopt (char opt) const
 一文字オプションをチェックする.
const std::vector< std::string > & getArgs () const
 オプション以外の実引数の配列を得る.
void getArgs (std::vector< std::string > &args) const
 オプション以外の実引数の配列を得る.
const std::string & illegalOpt () const
 想定外のオプションを得る.

フレンド

class GetOptTestCase


説明

コマンドライン引数を解析するクラス.

コマンドライン引数を解析して、オプション文字列、オプション引数、および それ以外のコマンド引数などに分類する。 各オプションごとに指定の有無などをチェックすることができる。
オプションは次のように分類される:

1文字オプションは、シングルハイフン ('-') の後にオプション文字を続けたもの (例: -h や -v)。1文字オプションはまとめて記述することもできる (例: -hv)。

引数を取る1文字オプションは、1文字オプションであり、次の要素をオプション引数として 取るもの (例: -o 10)。オプション引数がオプション文字に連接してよい (例: -o10)。

2文字以上のオプションは、ダブルハイフン ('--') の後に 2文字以上の英数字列を続けたもの (例: --help や --version)。

引数を取る2文字以上のオプションは、2文字以上のオプションであり、 次の要素をオプション引数として取るもの (例: --age 20)。 1文字オプションとは異なり、オプション引数がオプション文字に連接することはできない (例: --age20 は不可)。

使い方:
GetOpt コンストラクタに main() の引数とオプション仕様を渡してやると、 仕様に従って引数を解析した結果を保持するオブジェクトが構築される。 そのオブジェクトに対して getopt() のようなメンバ関数を呼ぶことにより、 引数の指定の有無などを調べることができる。
例:

 #include <iostream>
 using namespace std;

 #include "langedge/getopt.hpp"

 int main( int argc, char **argv )
 {
     vector<string> args;
     {
         langedge::GetOpt opts( argc-1, argv+1, "hv", "help,c:10,level:" );

         string val;

         if (opts.getOptsNum() == 0
             || opts.getopt( "h" ) || opts.getopt( "help" ))
         {
             cerr << "Usage: regtest [-hv] [--help] [-c <count>] [--level <level>]" << endl;
         }

         if (opts.getopt( "v" )) {
             cerr << "version 1.0" << endl;
         }

         if (opts.getopt( "c", val )) {
             cerr << "count <" << val << "> specified." << endl;
         }

         if (opts.getopt( "level", val )) {
             if (val.empty()) {
                 cerr << "--level needs an argument." << endl;
             } else {
                 cerr << "level <" << val << "> specified." << endl;
             }
         }

         // 仕様外のオプションが指定されていないか、チェック
         val = opts.illegalOpt();
         if (!val.empty()) {
             cerr << "illegal option: " << val << endl;
         }

         // オプション類を除いた実引数を取り出す
         opts.getArgs( args );

         // ここで、opts オブジェクトは破棄される
     }
 }


コンストラクタとデストラクタ

langedge::GetOpt::GetOpt int  argc,
const char *const *  argv,
const char *  shortopts,
const char *  longopts = NULL
[inline]
 

コンストラクタ.

与えられたコマンドライン引数を解析して、オプションごとに分類する。

引数:
argc 引数の数。通常は、main() に渡される第1引数-1
argv 引数ベクトルへのポインタ。通常は、main() に渡される第2引数+1
shortopts 引数を取らない一文字オプションの集合を表す文字列 ("hvd" など)
longopts 長いオプション ("help" for --help) や 引数付きのオプション ("opt:" または "opt:default-value") を指定する。一文字オプションでも引数をとるものは、こちらに記述する。
複数のオプションは、"," で区切って並べる。例: "help,opt:val"
事前条件:
argc > 0

argv != NULL

langedge::GetOpt::~GetOpt  )  [inline]
 

デストラクタ.


関数

int langedge::GetOpt::getOptsNum  )  const [inline]
 

オプション指定の数を得る.

戻り値:
指定されたオプションの数 (実引数を除く)

bool langedge::GetOpt::getopt const char *  opt,
std::string &  value
const [inline]
 

オプション指定の有無のチェックとオプション引数取得.

引数:
opt 引数付きオプション ("infile" や "outfile" など)
value オプション opt の直後に位置する引数を返す
戻り値:
true 引数に opt が指定されている場合
false 引数に opt が指定されていない場合

bool langedge::GetOpt::getopt const char *  opt  )  const [inline]
 

オプション指定の有無をチェックする

引数:
opt チェックしたいオプション ("help" など)
戻り値:
true 引数に opt が指定されている場合
false 引数に opt が指定されていない場合

bool langedge::GetOpt::getopt char  opt  )  const [inline]
 

一文字オプションをチェックする.

引数:
opt チェックしたいオプションを表す文字コード ('h' や 'o' など)
戻り値:
true 引数に opt が指定されている場合
false 引数に opt が指定されていない場合

const std::vector<std::string>& langedge::GetOpt::getArgs  )  const [inline]
 

オプション以外の実引数の配列を得る.

戻り値:
オプションおよびその値を取り除いた残りの引数のベクタ。 戻値は、a_getOpt と同じライフタイムを持つ

void langedge::GetOpt::getArgs std::vector< std::string > &  args  )  const [inline]
 

オプション以外の実引数の配列を得る.

引数:
args オプションおよびその値を取り除いた残りの引数を返すベクタ

const std::string& langedge::GetOpt::illegalOpt  )  const [inline]
 

想定外のオプションを得る.

戻り値:
shortopts, longopts で設定した以外のオプションを返す


フレンドと関連する関数

friend class GetOptTestCase [friend]
 


このクラスの説明は次のファイルから生成されました:
LangEdge ライブラリに対してFri May 6 22:43:03 2005に生成されました。  doxygen 1.4.2