我有一個命令的字符串,例如: 開始C:\Users\...\test application.exe
帶有空格的路徑。
現在我想用system()
功能來啓動它:用包含空格的路徑啓動程序
system(command.c_str());
但問題是,它沒有啓動,因爲路徑包含空格。 我需要做些什麼來解決這個問題?
我有一個命令的字符串,例如: 開始C:\Users\...\test application.exe
帶有空格的路徑。
現在我想用system()
功能來啓動它:用包含空格的路徑啓動程序
system(command.c_str());
但問題是,它沒有啓動,因爲路徑包含空格。 我需要做些什麼來解決這個問題?
我需要做些什麼來解決這個問題?
你需要知道的第一件事是,system()
使用shell執行命令,外殼要你與""
封閉程序路徑,如果路徑中包含空格。
使用當前的C++標準,解決最簡單的方法是使用raw string literal:
std::string command = R"("C:\Users\test application.exe")";
system(command.c_str());
否則(對於較老的C++標準),你需要逃避所有的特殊字符:
std::string command = "(\"C:\\Users\\test application.exe\")";
//^^ ^ ^
@Cody我認爲這個公式更好。 –
@Cody嗯,這是一個難以割裂的堅果。在這種情況下,我看不到任何用例ITM。 –
@Cody啊,但我已經提到過。 –
像所有帶窗口空格的命令一樣,你需要用'''''把它包裝起來。 – NathanOliver
引用路徑。請記住,如果您通過字符串文字設置,請將其轉義。 – drescherjm
如果我對此做出評論:啓動「C:\ Users ... \ test application.exe」,它也不起作用......我不知道這些東西是如何工作的:/ – Shedex