3

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

此外,我打印出我要发送的内容system(),然后在命令行上运行该打印输出,它工作得很好,这很简单。

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

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

"C:\Program Files (x86)\MyProgram\some_executable.exe" "C:\Users\me\Desktop\files"

我不确定为什么引号没有帮助,我在system()通话中的路径周围加上引号。cmd 的打印输出正是我想要运行的,但它不起作用。但是,如果该路径中没有空格,它将执行得很好。

关于将带有空格的参数传递给system()调用的任何建议?

4

1 回答 1

1

经过更多研究,这个问题与 Windows 愚蠢有关。系统调用删除了第一个和最后一个引号,因此我不得不将整个内容用另一组引号括起来......我在这里找到了我的解决方案:C++ system() not working when there are space in two different parameters

于 2013-02-19T16:20:40.533 回答