getoptを使う

30分プログラム、その257。C言語のgetoptを試してみる。
ちょっとした機会があって、すごく久しぶりにC++を触った。うん、まだまだ忘れてないぞ。
で、そこでコマンドライン引数の解析をしてみたかったので、getoptを試してみた。Python版とかだったら使ったことがあるけれど、オリジナルは初めて。

無駄にcoutとか使っているけど、これはソースの他の部分と統一するため。正直、coutよりもprintfが使いやすい気がしてる。

使い方

$ ./foo -v
foo version 1.0.0

$ ./foo -o hoge
output file: hoge

ソースコード

#include <iostream>
#include <unistd.h>
using namespace std;

int main(int argc,char* argv[]){
  char result;
  while((result=getopt(argc,argv,"o:hv")) != -1){
    switch(result){
    case 'o':
      cout << "output file: " << optarg << endl;
      break;
    case 'v':
      cout << "foo version 1.0.0" << endl;
      return 0;
    default:
      cerr << "error" << endl;
      return 1;
    }
  }
  return 0;
}