使用包含给定空格的路径启动程序

She*_*dex 1 c++

我有一个命令字符串,例如:C:\Users\...\test application.exe 以一个有空格的路径开头.
现在我想使用该system()函数启动它:

system(command.c_str());
Run Code Online (Sandbox Code Playgroud)

但问题是,它不会启动因为路径包含空格.我该怎么做才能解决这个问题?

πάν*_*ῥεῖ 5

我该怎么做才能解决这个问题?

您需要知道的第一件事是system()使用shell来执行命令"",如果路径包含空格,shell希望您用程序路径包围它.

使用当前的C++标准,最简单的修复方法是使用原始字符串文字:

std::string command = R"("C:\Users\test application.exe")";
system(command.c_str());
Run Code Online (Sandbox Code Playgroud)

否则(对于较旧的C++标准),您需要转义所有特殊字符:

std::string command = "(\"C:\\Users\\test application.exe\")";
                     // ^   ^      ^                     ^
Run Code Online (Sandbox Code Playgroud)