在Windows上使用system()时出现问题

Issue using system() on Windows

本文关键字:问题 system Windows      更新时间:2023-10-16

我有一个C++程序,它试图用两个参数调用一个可执行文件。该代码在Mac上运行良好,但我在Windows上有一些问题。我相信这个问题与参数中的空格有关,因为当我使用没有空格的路径时,它可以很好地工作。

此外,我将要发送的内容打印到system()中,然后在命令行上运行打印输出,它运行得很好,这很琐碎。

我打这样的电话:ret = system(cmd.c_str());

如果我这样做:cout << cmd << endl;,我会得到这样的东西:

"C:Program Files (x86)MyProgramsome_executable.exe" "C:UsersmeDesktopfiles"

我不知道为什么引号没有帮助,我在system()调用的路径周围包含了引号。cmd的打印输出正是我试图运行的,但它不起作用。然而,如果该路径中没有空格,则执行起来会很好。

关于将带空格的参数传递给system()调用,有什么建议吗?

经过更多的研究,这个问题与Windows的愚蠢有关。系统调用删除了第一个和最后一个引号,所以我不得不用另一组引号来包装整个东西。。。我在这里找到了我的解决方案:当两个不同的参数

中有空格时,C++系统()不工作