#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 オブジェクトは破棄される
}
}
|
||||||||||||||||||||
|
コンストラクタ. 与えられたコマンドライン引数を解析して、オプションごとに分類する。
|
|
|
デストラクタ.
|
|
|
オプション指定の数を得る.
|
|
||||||||||||
|
オプション指定の有無のチェックとオプション引数取得.
|
|
|
オプション指定の有無をチェックする
|
|
|
一文字オプションをチェックする.
|
|
|
オプション以外の実引数の配列を得る.
|
|
|
オプション以外の実引数の配列を得る.
|
|
|
想定外のオプションを得る.
|
|
|
|
1.4.2