我正在编写一个解决一种min的程序。生成树问题。我有两个不同的算法,我已经在两个单独的.cpp文件中工作,我命名为kruskels.cpp和prims.cpp。
我的问题是:
每个文件都使用以下命令行来运行它。时间./FILENAME INPUTFILE FACTOR
我想创建一个程序,根据输入的输入文件,将运行kruskels.cpp或prims.cpp。我怎样才能做到这一点?
此程序必须将这些命令行参数传递给kruskels或prims。每个文件(kruskels.cpp和prims.cpp)都设计为使用那些命令行arugments运行(因此它们将INPUTFILE和FACTOR作为变量来处理文件io)。
这应该是针对c ++。
答案 0 :(得分:6)
您可以使用system
功能调用外部程序。
然而,最好以模块化方式构建Kruskal和Prim求解器作为类,并根据输入从main
实例化相应的类。为此,您可以将kruskels.cpp,prims.cpp和main.cpp链接到一个可执行文件中。
答案 1 :(得分:2)
标准方法是使用system()
。您可能还想查找popen()
(或在Windows上,_popen()
)。
编辑:我的假设是你有两个可执行文件和(关键点)想要将它们作为单独的可执行文件保存。在这种情况下,使用系统非常简单。例如,您可以执行以下操作:
std::stringstream buffer;
if (use_Kruskals)
buffer << "Kruskals " << argv[1] << argv[2];
else
buffer << "Prims " << argv[1] << argv[2];
system(buffer.str().c_str());
根据您正在做的事情(以及Eli所指出的),您可能希望创建一个可执行文件,而在该一个可执行文件中实现Prim和Kruskal的方法。如果没有看到你的代码,就不可能猜出这将会有多少工作。
答案 2 :(得分:0)
如果在执行两个子程序之一后需要顶级程序重新获得控制权,请使用system()或popen(),如果不需要,则可以使用execve()