我有一个 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 ';'
您需要了解您的代码试图做什么。
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
中指定完整路径。