我有一个命令的字符串,例如: 开始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