2

わかりました、私は次のようにループできることを知っています:

for (int i=1; i<=argc-1;i++) {
  cout << argv[i] << endl;
}

ただし、この方法では二重引用符が失われます。つまり、文字列"something here"が args 配列の 1 つの要素として扱われ、引用符が失われます。

パラメータ内にスペースがある場合、引用符を想定できることはわかっていますが、スペースがあるかどうかに関係なく、引用符は常に失われます。

4

2 に答える 2

9

引用符を削除するのはシェルです。シェルに引用符を渡してもらいたい場合は、それらをエスケープする必要があります。

$ ./my-program \"hello\ world\"

1 つの引数にするために、スペースもエスケープしていることに注意してください。

于 2012-05-31T09:07:42.197 に答える
3

元のコマンド ラインが必要な場合は、 GetCommandLine() API 関数を使用できます。

于 2012-05-31T09:15:43.117 に答える