2

コマンドライン引数のシーケンスを読み取り、それらを使用して何かを実行するこのコンソールアプリを作成しました。

問題は、ユーザーが次のようなものを入力した場合です。

 --folder "C:\my folder\" --username john

Main関数のargsString配列には、4つではなく2つの要素が含まれます。

1st element: "--folder"
2nd element: "C:\my folder\" --username john"

(\ "シーケンスは二重引用符としてエスケープされます。)

引用符を使用しないと、5つの要素になります...

--folder C:\my folder\ --username john

1st element: --folder
2nd element: C:\my
3rd element: folder\
4th element: --username
5th element: john

...この問題を回避するための最良の方法は何ですか?

4

1 に答える 1

6

これは、Windowsでの奇妙なコマンドライン解析ルールの結果です。ここhttp://msdn.microsoft.com/en-us/library/windows/desktop/17w5ykft(v=vs.85).aspxを参照してください。コマンドラインは実際には次のようになります。--folder "C:\my folder\\" --username john

これはユーザー入力エラーです。コードを修正しようとしないでください。ただ優雅に失敗します。

于 2013-01-21T15:58:33.300 に答える