使用system()时如何处理路径中的空格? 我对C++仍然是新手,正在设计一个在C++程序中打开程序的方法。 问题是,每当我的路径中有空格时,它就会将其视为不同的参数 int _tmain(int argc, _TCHAR* argv[]) { system("C:\\Users\\blah\\Desktop\\a\\ b.txt"); return 0; }

使用system()时如何处理路径中的空格? 我对C++仍然是新手,正在设计一个在C++程序中打开程序的方法。 问题是,每当我的路径中有空格时,它就会将其视为不同的参数 int _tmain(int argc, _TCHAR* argv[]) { system("C:\\Users\\blah\\Desktop\\a\\ b.txt"); return 0; },c++,system,C++,System,我收到的输出是: 'C:\Users\blah\Desktop\a\' is not recognized as an internal or external command, operable program or batch file. 在Unix上,可以使用fork()+exec() 在Windows上,签出 它们直接执行程序,避免使用命令shell解释器,从而避免对空格等特殊字符进行任何特殊处理。在Unix上,可以使用fork()+exec() 在Windows上,签出 它们直接执行

我收到的输出是:

'C:\Users\blah\Desktop\a\' is not recognized as an internal or external command, operable program or batch file.

在Unix上,可以使用fork()+exec()

在Windows上,签出


它们直接执行程序,避免使用命令shell解释器,从而避免对空格等特殊字符进行任何特殊处理。

在Unix上,可以使用fork()+exec()

在Windows上,签出


它们直接执行程序,避免使用命令shell解释器,从而避免对空格等特殊字符进行任何特殊处理。

您可以双引号引用字符串文字编辑:还注意到您的反斜杠没有转义,因此更新如下:P

system("\"C:\\Users\\blah\\Desktop\\a\\ b.txt\"");

另外,请告知您确实不应该使用
system
。请尝试fork、spawn,或者甚至是非官方的boost.process类,该类的功能与.NET process类类似,具体取决于您的需要。还要考虑一下为什么您需要从一个流程启动一个流程。。。也许您可以创建一个库?

您可以双引号引用字符串文字编辑:还注意到您的反斜杠没有转义,因此更新如下:P

system("\"C:\\Users\\blah\\Desktop\\a\\ b.txt\"");
另外,请告知您确实不应该使用
system
。请尝试fork、spawn,或者甚至是非官方的boost.process类,该类的功能与.NET process类类似,具体取决于您的需要。还要考虑一下为什么您需要从一个流程启动一个流程。。。也许你可以建一个图书馆