如何通过cstdlib系统传递带空格的参数

buc*_*tak 5 c++ std

我有这个Windows控制台应用程序,它接受一个文件,做一些计算,然后将输出写入指定的文件.输入以"ap​​p.exe -input fullfilename"格式指定.我需要从我的C++程序中调用此应用程序,但是在文件路径中存在空格问题.当我通过键入直接从cmd.exe调用应用程序时(为清楚起见未指定输出文件)

"c:\first path\app.exe" -input "c:\second path\input.file"
Run Code Online (Sandbox Code Playgroud)

一切都按预期工作.但是,当我尝试使用cstdlib std :: system()函数时,即

std::system(" \"c:\\first path\\app.exe\" -input \"c:\\second path\\input.file\" ");
Run Code Online (Sandbox Code Playgroud)

控制台打印出c:\ first不是任何有效命令.这可能是常见的错误并且有简单的解决方案,但我一直无法找到.感谢任何帮助.

Ama*_*9MF 0

不要尝试在 std::system() 调用中添加引号。请尝试以下操作:

std::system("c:\\first\\ path\\app.exe -input c:\\second\\ path\\input.file");
Run Code Online (Sandbox Code Playgroud)