gpt4 book ai didi

使用命令行参数执行另一个程序的 C++ 程序

转载 作者:可可西里 更新时间:2023-11-01 18:17:30 26 4
gpt4 key购买 nike

如何使用来自 C++ 程序的参数执行命令行程序?这是我在网上找到的:

http://www.cplusplus.com/forum/general/15794/

std::stringstream stream;
stream <<"program.exe "<<cusip;
system(stream.str().c_str());

但它似乎不接受实际的程序位置,所以我不确定如何应用它。我希望有这样的东西:

std::stringstream stream;
stream <<"C:\Tests\SO Question\bin\Release\HelloWorld.exe "<<"myargument";
system(stream.str().c_str());

这给出了几个与反斜杠相关的警告 - 该程序无法运行。是否希望您在某个特定位置安装该程序?

这是我在控制台中得到的输出:

'C:\Tests' is not recognized as an internal or external command, operable program or batch file.

附录:

所以根据 Jon 的回答,对我来说正确的版本是这样的:

#include <iostream>
#include <cstdlib>
#include <sstream>
#include <cstring>
int main(int argc, char *argv[])
{

std::stringstream stream;
stream << "\"C:\\Tests\\SO Question\\bin\\Release\\HelloWorld.exe\""
<< " " // don't forget a space between the path and the arguments
<< "myargument";
system(stream.str().c_str());

return 0;
}

最佳答案

首先,只要您希望单个反斜杠出现在实际字符串值中,就应该在文字字符串中使用 反斜杠。这是根据语言语法;符合规范的编译器可能比简单地对此发出警告更糟糕。

无论如何,您遇到的问题是由于 Windows 中包含空格的路径必须用双引号引起来。由于双引号本身需要在 C++ 字符串文字中进行转义,因此您需要编写的是

stream << "\"C:\\Tests\\SO Question\\bin\\Release\\HelloWorld.exe\""
<< " " // don't forget a space between the path and the arguments
<< "myargument";

关于使用命令行参数执行另一个程序的 C++ 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14821787/

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