如何用argc&调用函数argv的?

时间:2014-09-15 10:20:05

标签: c++ c qt

我目前正尝试使用QT为现有命令行程序创建GUI,作为学习练习。

原始代码是用c编写的,我已经包含了c ++位的c包装器。我采取了原来的

int main(int argc, char **argv)

并将其转换为正常功能(更改名称)。

我有几个qt复选框用作输入,(例如-v在cmdline中激活详细,所以现在我有一个详细的复选框,使char verbose = to" v")

还有其他一些参数需要数字,例如4个线程的-t 4。

原始程序中的选项实现如下:

while ((opt = getopt(argc, argv, "vqnrik1eE:P:NTX:F:t:h?f:o:s:")) != -1) {
    switch (opt) {
case 'v':
        verbose = 2;
        break;

如何将所有这些不同选项称为标准功能?我可以把整个论点写成一个大字符串并在可能的情况下将其输入,但是我该怎么做呢?

谢谢,

2 个答案:

答案 0 :(得分:4)

您应该远离参数并直接设置控制变量:

if(verboseCheckBox->checked()){
    verbose=2;
}
//etc.

答案 1 :(得分:0)

只需使用如下字符串数组调用:

char* argv[4] = {executing_path, "-t 4","v","random_argument"};
const int argc = sizeof(argv)/sizeof(char*);
main(argc, argv);

请注意,第一个参数通常是您在main函数中收到的可执行文件的完整路径。如果可能的话,我会保持同样的行为;有时,代码解析参数在范围1... n-1中进行,因此跳过数组中的第一个值。

既然你知道怎么做,我也会反对它。由于你已经在源代码中,你应该使用直接方法调用,以便将选项设置为棘轮怪胎在他的答案中解释。