3

2つのパラメーターを使用して実行可能ファイルを呼び出そうとしているC++プログラムがあります。コードはMacでは正常に機能しますが、Windowsではいくつか問題があります。スペースのないパスを使用すると問題なく機能するため、この問題はパラメーター内のスペースに関連していると確信しています。

さらに、送信先をsystem()印刷してから、コマンドラインでその印刷を実行すると、問題なく動作します。これは些細なことです。

私はこのように電話をかけます:ret = system(cmd.c_str());

そして私がそうするなら:cout << cmd << endl;私はこのようなものを手に入れるでしょう:

"C:\Program Files (x86)\MyProgram\some_executable.exe" "C:\Users\me\Desktop\files"

引用符が役に立たない理由がわかりませんsystem()。呼び出しのパスの周りに引用符を含めています。cmdの出力は私が実行しようとしているものとまったく同じですが、機能しません。ただし、そのパスにスペースが含まれていない場合は、正常に実行されます。

スペースを含むパラメータをsystem()呼び出しに渡すことに関する提案はありますか?

4

1 に答える 1

1

さらに調査した結果、この問題はWindowsが愚かであることに関連しています。システムコールは最初と最後の引用符を削除するので、すべてを別の引用符のセットでラップする必要がありました...ここで解決策を見つけました:2つの異なるパラメーターにスペースがあるとC ++ system()が機能しません

于 2013-02-19T16:20:40.533 に答える