使用system()时如何处理路径内的空格?

| 我还是C ++的新手,正在研究一种在C ++程序中打开程序的方法。 问题是,每当路径中有空格时,它就会将其视为不同的参数。
int _tmain(int argc, _TCHAR* argv[])
{
    system(\"C:\\\\Users\\\\blah\\\\Desktop\\\\a\\\\ b.txt\");
    return 0;
}
我收到的输出是:
\'C:\\Users\\blah\\Desktop\\a\\\' is not recognized as an internal or external command, operable program or batch file.
    
已邀请:
您可以用双引号括住字符串文字。编辑:还只是注意到您的反斜杠没有转义,所以在下面:P更新
system(\"\\\"C:\\\\Users\\\\blah\\\\Desktop\\\\a\\\\ b.txt\\\"\");
还请注意,您确实不应使用
system
。尝试使用fork,spawn或什至是非官方的boost.process类,根据您的需求,该类的功能类似于.NET process类。还考虑一下为什么需要从某个流程启动一个流程……也许您可以创建一个库?     
在Unix上,您可以使用fork()+ exec()。 在Windows上,检出spawn。 它们直接执行程序,避免了命令解释器解释程序,从而避免对特殊字符(如空格)进行任何特殊处理。     

要回复问题请先登录注册