コマンドラインで文字列の後にパラメータをキャプチャするにはどうすればよいですか?
./executable.out -apps path_to_out
上記のコードでは、path_to_outを文字列変数に格納します。それを行う効率的な方法は何ですか?
それはあなたが望むオプションの種類に依存します。1文字のオプションのみを使用する場合は、Cライブラリ関数を使用しgetopt
てコマンドラインを解析できます。長いオプション(たとえば--apps
)が必要な場合は、を使用できますgetopt_long
が、これは移植がうまくいかないGNU拡張機能です。本当に、本当に凝ったオプションの解析が必要な場合は、GLibのようなものを使用できます。
もちろん、1からまでの引数を繰り返して、自分でロールすることができargc
ます。遭遇した場合は-apps
、それを確認しi+1 < argc
て次の引数を取得します。
argv[argc-1]
パスがコマンドラインの最後の引数である場合は、すでに値があります。
あなたのメインが次のような場合:
int main(int argc,char **argv)
すべてのコマンドライン引数はにありchar **argv
ます。あなたの場合:
argv[2]
path_to_outです。でコピーしたい場合はstring
、とにかく以下のことを行うことができます:
string path(argv[2]);
「コマンドラインの文字列の後に」と尋ねると、コマンドライン引数-apps
がダッシュで始まっているという事実を参照しているように見えます。これにより、コマンドラインが「オプション」になります。
これを行うための好ましい方法は、GNUシステムのgetoptなどのオプションを処理するために事前定義されたライブラリを使用することです。
この方法でパラメータストアを実行すると。
例:---> ./executable.out -apps path_to_out
argv[0] will be "./executable.out"
argv[1] will be "-apps"
and argv[2] will be "path_to_out".