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

时间:2011-05-25 23:30:59

标签: c++ 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.

2 个答案:

答案 0 :(得分:3)

您可以双引号字符串文字。 修改:还注意到你的反斜杠没有被转义,所以在下面更新:P

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

同样让记录知道你真的不应该使用system。尝试fork,spawn,甚至是非官方的boost.process类,它具有与.NET进程类相似的功能,具体取决于您的需求。还要考虑为什么需要从流程中启动流程...也许你可以创建一个库?

答案 1 :(得分:1)

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

在Windows上,查看spawn

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