0

コマンドラインで文字列の後にパラメータをキャプチャするにはどうすればよいですか?

./executable.out -apps path_to_out

上記のコードでは、path_to_outを文字列変数に格納します。それを行う効率的な方法は何ですか?

4

4 に答える 4

4

それはあなたが望むオプションの種類に依存します。1文字のオプションのみを使用する場合は、Cライブラリ関数を使用しgetoptてコマンドラインを解析できます。長いオプション(たとえば--apps)が必要な場合は、を使用できますgetopt_longが、これは移植がうまくいかないGNU拡張機能です。本当に、本当に凝ったオプションの解析が必要な場合は、GLibのようなものを使用できます。

もちろん、1からまでの引数を繰り返して、自分でロールすることができargcます。遭遇した場合は-apps、それを確認しi+1 < argcて次の引数を取得します。

于 2012-08-23T05:25:09.017 に答える
1

argv[argc-1]パスがコマンドラインの最後の引数である場合は、すでに値があります。

あなたのメインが次のような場合:

int main(int argc,char **argv)

すべてのコマンドライン引数はにありchar **argvます。あなたの場合: argv[2]path_to_outです。でコピーしたい場合はstring、とにかく以下のことを行うことができます:

string path(argv[2]);
于 2012-08-23T05:22:41.547 に答える
0

「コマンドラインの文字列の後に」と尋ねると、コマンドライン引数-appsがダッシュで始まっているという事実を参照しているように見えます。これにより、コマンドラインが「オプション」になります。

これを行うための好ましい方法は、GNUシステムのgetoptなどのオプションを処理するために事前定義されたライブラリを使用することです。

于 2012-08-23T05:26:43.480 に答える
0

この方法でパラメータストアを実行すると。

例:---> ./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".
于 2012-08-23T05:26:51.747 に答える