Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/takamin/win-c
getopt / getopt_long for Windows Visual C/C++ (MIT LICENSE)
https://github.com/takamin/win-c
argv-parser cplusplu getopt
Last synced: 2 months ago
JSON representation
getopt / getopt_long for Windows Visual C/C++ (MIT LICENSE)
- Host: GitHub
- URL: https://github.com/takamin/win-c
- Owner: takamin
- License: mit
- Created: 2015-04-05T07:41:04.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2016-11-21T04:54:13.000Z (about 8 years ago)
- Last Synced: 2024-04-14T22:12:58.065Z (8 months ago)
- Topics: argv-parser, cplusplu, getopt
- Language: C
- Homepage: http://takamints.hatenablog.jp/entry/2015/04/27/231454
- Size: 17.6 KB
- Stars: 26
- Watchers: 3
- Forks: 10
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
win-c
============C/C++から使えるWindowsのコンソールアプリケーション用のライブラリです。
__関数__
* `getopt() / getopt_long()` - コマンドラインオプション解析
## `getopt() / getopt_long()` - コマンドラインオプション解析
関数の仕様は、[POSIXのgetopt](http://linuxjm.sourceforge.jp/html/LDP_man-pages/man3/getopt.3.html)を参照してください。
* 長いオプションの`optional_argument` と `getopt_long_only()`は、対応していません。
### 使用例
以下は、C++での使い方サンプルです。
```
#include
#include "getopt.h"
using namespace std;
int main(int argc, char* argv[]) {
//オプションの定義。a, b, c, dで、bとcは引数を取る
// -a
// -b
// -c
// -d
char const * optstring = "ab:c:d";
int opt_a = 0;
char* opt_b = 0;
char* opt_c = 0;
int opt_d = 0;//オプションの解析
int opt = 0;
while((opt = getopt(argc, argv, optstring)) != -1) {
switch(opt) {
case 'a':
opt_a = 1;
break;
case 'b':
opt_b = optarg;
break;
case 'c':
opt_c = optarg;
break;
case 'd':
opt_d = 1;
break;
default:
cerr << "unknown option." << endl;
exit(-1);
break;
}
}//オプション以外のパラメータ
char* noptarg = argv[optind++];
}
```### 使い方
main関数のargc,argvとオプション定義の文字列を渡して、(-1)が返されるまで繰り返し呼び出して、オプション解析を行います。
#### オプションの定義
オプションは、オプションの文字列を並べた文字列で定義。
引数を取るオプションは、オプション文字の次にコロンを記述。
#### 戻り値
(-1)はオプション解析が終了したことを表します。
オプションが見つかるとその文字を返します。
オプションでない文字が指定されているときは、'?'が返されます。
#### オプションの引数
引数を取るオプションが見つかった場合、`optarg`がその引数を指し示しています。
#### オプション以外のコマンドラインパラメータ
オプション解析が終了すると、グローバル変数 `optind` が、オプションでない最初のコマンドラインパラメータを指しています。
`optind < argc` なら、`argv[optind]`が、オプションではない最初のコマンドラインパラメータです。
`optind >= argc` なら、オプションでないパラメータはありません。