gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:49:46 25 4
gpt4 key购买 nike

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

"c:\first path\app.exe" -input "c:\second path\input.file"

一切正常。但是,当我尝试使用 cstdlib std::system() 函数时,即

std::system(" \"c:\\first path\\app.exe\" -input \"c:\\second path\\input.file\" ");

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

最佳答案

您应该使用 Windows API 中的 _wspawnv 函数而不是 std::system()。如果您想在 PATH 中搜索程序,而不是指定它的完整路径,请使用 _wspawnvp。

#include <stdio.h>#include <wchar.h>...const WCHAR *app = L"C:\\path to\\first app.exe";const WCHAR *argv[] = {app, L"-input", L"c:\\second path\\input file.txt"};_wpspawnv(_P_WAIT, app, argv);

如果您 100% 确定您的输入文件名永远不会包含 ASCII 以外的任何其他内容,您也可以使用 _spawnv/_spawnvp。

关于c++ - 如何通过cstdlib系统传递带空格的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2997456/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com