gpt4 book ai didi

c++ - getopt 参数取决于另一个

转载 作者:行者123 更新时间:2023-11-28 07:03:00 25 4
gpt4 key购买 nike

在使用 getopt 时,是否有一种内置方法可以使一个参数依赖于另一个参数?例如,我有我的 switch case 设置并且一切正常,但在我读取文本文件 (-i) 之前我需要我的 -m 参数(马尔可夫链的长度)。

换句话说,我想确保在处理我的输入参数时没有设置其他参数。

小摘录:

    while ((opt = getopt_long(argc, argv, "i:shm:", long_options, &option_index))
!= -1)
{
switch (opt) {
case 'i':
inputEnglish.ReadFile((string)optarg);
break;

case 'm':
inputEnglish.setMarkovLength(atoi(optarg));
break;

case 's':
break;

case 'h':
printHelp();
break;

case '?':
cout << "dfgdfgdf" << endl;
return 0;
break;

default:
printHelp();
return 0;
break;
}
}

如果没有任何内置方法,您是否有一种干净的方法来执行此操作?干净的代码在这里比效率更重要。感谢您的帮助!

最佳答案

保存文件名,只有在处理完所有命令行参数后才处理它。这通常是最好的方法——getopt 代码应该只解析,而不是处理。

或者,这是大多数命令的工作方式,不要为文件名使用标志...所以用法是 pgm -m foo 文件名。然后,在处理完所有标志后,您只需将剩余的参数(argv[optind] 到 argv[argc-1])作为文件名进行处理。这有利于根据标志值处理文件的常见情况(如您的情况)。

关于c++ - getopt 参数取决于另一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22163106/

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