cmd正常运行时系统调用生成错误 我试图通过我的C++代码运行EnFisher来增强一些图像的HDR保险丝。我的代码基本上是这样的: std::string cmd=getCmd(); system(cmd.c_str());

cmd正常运行时系统调用生成错误 我试图通过我的C++代码运行EnFisher来增强一些图像的HDR保险丝。我的代码基本上是这样的: std::string cmd=getCmd(); system(cmd.c_str());,c++,command-line,system,C++,Command Line,System,getcmd将返回如下字符串: "C:\code\Debug\enfuse" --hard-mask "C:\Users\m\AppData\Local\Temp\pp\0-0.jpg" "C:\Users\m\AppData\Local\Temp\pp\1-0.jpg " "C:\Users\m\AppData\Local\Temp\pp\2-0.jpg " &q

getcmd将返回如下字符串:

"C:\code\Debug\enfuse" --hard-mask      "C:\Users\m\AppData\Local\Temp\pp\0-0.jpg"        "C:\Users\m\AppData\Local\Temp\pp\1-0.jpg "        "C:\Users\m\AppData\Local\Temp\pp\2-0.jpg "        "C:\Users\m\AppData\Local\Temp\pp\3-0.jpg "        "C:\Users\m\AppData\Local\Temp\pp\4-0.jpg "    -o "C:\Users\m\AppData\Local\Temp\pp\0fuse.tif"  
当我使用上述代码运行此字符串时,出现以下错误:

The filename, directory name, or volume label syntax is incorrect.
The input line is too long.
但是,如果我复制字符串并将其粘贴到命令窗口中,它会正常工作,没有任何问题

我检查并发现我从目录条目中删除了引号,那么它工作得很好,但是如果我删除了引号,那么如果路径有空间,那么命令字符串是错误的,它不工作

为什么此命令在命令窗口上运行良好,但不使用系统

我是在windows上开发的,但是这段代码应该是独立于平台的,我应该能够在Linux上编译它

编辑1 我注意到字符串的某些部分在引号之前有一个空格,因此我删除了它们,字符串变成:

"C:\code\Debug\enfuse" --hard-mask      "C:\Users\m\AppData\Local\Temp\pp\0-0.jpg"        "C:\Users\m\AppData\Local\Temp\pp\1-0.jpg"        "C:\Users\m\AppData\Local\Temp\pp\2-0.jpg"        "C:\Users\m\AppData\Local\Temp\pp\3-0.jpg"        "C:\Users\m\AppData\Local\Temp\pp\4-0.jpg"    -o "C:\Users\m\AppData\Local\Temp\pp\0fuse.tif" 
当复制到cmd窗口时,该字符串工作正常,但当我通过如上所述的系统调用运行它时,我得到以下错误:

The filename, directory name, or volume label syntax is incorrect.
The input line is too long.

请尝试\\替换\C:\\Users\\m\\AppData\\Local\\Temp\\pp\\2-0.jpgthanks,但这并没有解决问题,因为字符串是自动生成的,因此已正确转义。请注意,如果我删除引号,那么系统调用会起作用,因此问题是引号,而不是实际路径。