我有一个命令字符串,例如:C:\Users\...\test application.exe
以一个有空格的路径开头.
现在我想使用该system()函数启动它:
system(command.c_str());
Run Code Online (Sandbox Code Playgroud)
但问题是,它不会启动因为路径包含空格.我该怎么做才能解决这个问题?
我该怎么做才能解决这个问题?
您需要知道的第一件事是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)
| 归档时间: |
|
| 查看次数: |
121 次 |
| 最近记录: |