getopt_long()/getopt() 具有重复的选项输入

发布于 2024-10-04 16:24:12 字数 199 浏览 5 评论 0原文

我刚刚了解这两个功能。一直在互联网上搜索以了解它们的用法。发现一件对于解析命令行选项输入非常重要的事情,但没有讨论。

在这种情况下,如果输入重复的选项,两个函数都无法做任何处理。我想知道是否有任何 lib 函数可以用于此目的。

如果我必须自己处理的话。我想到的方法是将短选项收集到一个数组中,并在数组中找到相同的选项。

有更好的方法吗?

I just got to know both functions. Have been searching internet to learn their usage. Found one thing which is very important to parse the command line option input, but not discussed.

Is such a case, if duplicated options are typed in, both functions can not do anything to handle it. I was wondering if there is any lib function to use for this.

If I have to handle it myself. The way in my mind is to collection short option into an array and find identical ones in the array.

Any better way to do it?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

妄想挽回 2024-10-11 16:24:12

如果您想对重复选项执行一些特殊操作,您可以在选项处理代码中管理状态。

-v|--verbose 这样的东西可以重复以获得额外的详细程度,并且 vebosity 处理代码是

// initialize
int verbose_level=0

// in the getopt case for -v
  verbose_level++;

(对于可以使用应该使用的参数重复的选项,加载一个列表或类似的列表)。

如果您不想重复做任何特殊的事情,只需每次设置该值

  // in the case
  verbose_level = 1;

,如果您想检测重复

  // in the case
  if (verbose_level) {
   // handle this case as an error...
}

If you want to do something special with duplicate options, you can manage state in the option handling code.

Something like -v|--verbose can be repeated for additional verboseness, and the vebosity handling code is

// initialize
int verbose_level=0

// in the getopt case for -v
  verbose_level++;

(for options that can be repeated with arguments which should all be used, load up a list or some such).

If you don't want repeats to do anything special just set the value every time

  // in the case
  verbose_level = 1;

and if you want to detect repeats

  // in the case
  if (verbose_level) {
   // handle this case as an error...
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文