コマンドの文字列があります。例: start C:\Users\...\test application.exe
に空白を含むパスがあります。空白を含むパスでプログラムを開始する
system(command.c_str());
しかし、問題は、パスにスペースが含まれているので、それが起動doesntの、次のとおりです。
は今、私はそれを起動するsystem()
機能を使用します。 これを修正するにはどうすればよいですか?
コマンドの文字列があります。例: start C:\Users\...\test application.exe
に空白を含むパスがあります。空白を含むパスでプログラムを開始する
system(command.c_str());
しかし、問題は、パスにスペースが含まれているので、それが起動doesntの、次のとおりです。
は今、私はそれを起動するsystem()
機能を使用します。 これを修正するにはどうすればよいですか?
これを修正するにはどうすればよいですか?
あなたが知る必要がある最初の事はsystem()
は、コマンドを実行するためにシェルを使用して、パスにスペースが含まれている場合、シェルは、あなたが""
でプログラムパスを囲むために望んでいることです。 (と古いC++標準の)それ以外の場合は
std::string command = R"("C:\Users\test application.exe")";
system(command.c_str());
、あなたは特殊文字のすべてをエスケープする必要があります:現在のC++の標準を使用して
は、修正するための最も簡単な方法は、raw string literal使用することです
std::string command = "(\"C:\\Users\\test application.exe\")";
//^^ ^ ^
@Cody私はこの処方がより良いと思います。 –
@Cody Hmm、それはひどい裂け目です。このような状況では、ITMというユースケースは見当たりません。 –
@Codyああ、私はすでに言及しました。 –
すべてのコマンドは、ウィンドウ内にスペースを入れて、 '" "で囲む必要があります。 – NathanOliver
パスを引用します。引用符を文字列リテラルで設定する場合は、引用符をエスケープしてください。 – drescherjm
「C:\ Users ... \ test application.exe」を起動すると、これがコメントされても動作しません。どのように動作しているのかわかりません:/ – Shedex