2011-07-23 9 views
2

私のutilsフォルダにfind.exeプログラムがあります。これは動作しません:WindowsのC++でsystem()を使用すると、別のディレクトリのプログラムを呼び出すのに2つの引用符が必要なのはなぜですか?

system("\"utils/find.exe\""); 

を私が得るすべては、この作品何らかの理由で、しかし

'utils' is not recognized as an internal or external command, 
operable program or batch file. 

です:

system("\"\"utils/find.exe\"\""); 

単一引用符で囲まれた文字列

system("echo \"utils/find.exe\""); 

をエコー出力

"utils/find.exe" 

...なぜ2つの引用符が必要ですか?

+0

'^'でエスケープすると何が起こるか試してみると楽しいかもしれません。 – Mehrdad

答えて

3

私は、あなたが.exeファイルを実行しようとしているので、あなたがウィンドウ上にいると仮定します。したがって、 "utils/find.exe"を書き込む代わりに、 "utils \ find.exe"と書いてみてください。 Windowsの区切り文字は '\'なので、 '/'が無視されるため、おそらくコマンドとして "utils"が表示されます。

+0

これは私の心に来たものです。しかし、それは '' utils \\ find.exe ''でしょう。 –

+0

はい、C文字列には\\が必要です。引用符なしで動作するかどうか試してみましたか? –

+0

はい、質問にはC++でタグ付けされています。いいえ、私はそれを試したことはありません。私はそれをする質問の著者を探すだろう。 –

1

おそらくsystem()がコマンドラインをシェルに渡しています。 cmd.exeも引用が必要ですか?

0

Windowsではディレクトリの区切り文字として/と\の両方を使用できますが、コマンドプロセッサは/で始まるものをスイッチとして解釈しようとします。これを試してみてください:

system("\"utils\\find.exe\""); 
関連する問題