如何在 C++ CLI 中运行 2 个命令

问题描述 投票:0回答:1

我有一个 C++ 应用程序,并且有两个带有命令的字符串。第一个字符串用于更改目录,第二个字符串用于 .exe 文件。我想在我的 C++ 项目 cli 中打印命令的输出。

代码:

std::string cd = "cd " + pathToExe;
std::string cmd = "file.exe" + comport + " " + com + " turn " + angle;

我尝试使用:

system(cd.c_str() && cmd.c_str()); 

// 这里有一个错误 -->

argument of typ "bool" is incompatible with parameter of type "const char *"

system(cd.c_str(); cmd.c_str()); 

// 这里也是一个错误 -->

expected a ')' and expected a ';'

c++ command console-application
1个回答
0
投票

您需要了解您的代码试图做什么。

system(cd.c_str() && cmd.c_str()); 

此代码调用

cd.c_str()
——它返回一个字符数组。假设它非空(不是假),然后它调用
cmd.c_str()
。然后它对这两个值进行逻辑 AND 运算,这可能是正确的。这就是它传递给
system()
的值——它确实需要一个字符数组。

这绝对不是你想要的。

其他人已经解决了使用

system()
的问题,以及它可能造成的危险。但你可以做一些事情。

首先,您可以使用

chdir()
更改程序中的目录:

chdir("new directory");
system(cmd.c_str());

系统命令完成后,如有必要,您可以

chdir
返回。

或者你可以创建一个新字符串:

std::string fullCommand = cd + " && " + cmd;
system(fullCommand.c_str())

&&
可以改为
;
。我认为两者都可以,但我没有测试过。

或者,如果您只是想到达正确的路径,但实际上不需要 cd 到该目录,您可以在

cmd
中指定完整路径。

© www.soinside.com 2019 - 2024. All rights reserved.