コマンドライン引数
もはやマイコンからも離れた記事を書いてみるテスト。
ライブラリにやらせてしまえ
コマンドライン引数ありますよね。端末からプログラムを実行するときにつけるヤツ。ls -laとか、sleep 10とか。当然ながらC/C++では
int main(int argc, char** argv)
と書くだけで引数を簡単に取得できるわけですが、これをそこらのソフトのようにオプションを使えるようにして、オプションにも引数を付けて、と考え始めると途端に実装が面倒になります。
そこで何かライブラリがないかと探していたところ、C++ではboostにprogram_optionsというそのものズバリなものがありました。基本的にadd_options()を使ってオプション名と引数の型を指定するだけで、引数処理をしてくれます。
また、C言語ではgetoptというものがあるようです。
実行例
ヘルプ表示がお手軽なのが特に素晴らしいと思います。
$ ./program_options -h Allowed options: --int arg intオプション --char arg (=a) charオプション --string arg stringオプション --vector arg vectorオプション -h [ --help ] show help
この使い方以外にも、設定ファイルからの読み取り結果と組み合わせたり、cpコマンドのような順序が重要だったりオプション文字列の無い引数を扱うこともできます。詳しくはboostのドキュメントを参照するなりググるなりしてください。
サンプルコード
https://gist.github.com/1893249
コンパイル
コンパイル時(、というかリンク時?)に、-lboost_program_optionsを指定してやります。環境毎の手順は適当に調べてください。