異種コンテナ
固定されたタイプのセットを格納できるコンテナーが必要な場合は、次のいずれかを使用できますboost::variant
。
typedef boost::variant<std::string, int> optval;
typedef std::vector<optval> options;
これで、文字列または整数のいずれかをベクターに push_back できます。バリアントは、その内容を記録します。
options opts;
opts.push_back(10);
opts.push_back("hello");
バリアントから正しい値を取得する方法など、Boost variantのドキュメントでそれについて読むことができます。もちろん、コマンドライン解析を既にセットアップしており、そのためのライブラリがもう必要ない場合は、引数名からそのようなバリアントへのマップを作成することもできます。
std::map<std::string, optval> map;
map["--max-foo"] = 10;
map["--title"] = "something fun";
コマンドライン解析
プログラムのコマンド ライン引数を解析したい場合は、Boost.Program Optionsライブラリを調べることができます。
getopt
ただし、ほとんどの場合、コマンドラインも解析できるposix 関数を使用することになります。最初にブースト プログラムのオプションを調べることをお勧めします。重すぎると感じた場合は、getopt を調べることができます (「参考文献」を参照man 3 getopt
) 。