【问题标题】:getopt - capture '?'getopt - 捕获“?”
【发布时间】:2012-11-03 11:03:48
【问题描述】:

我正在尝试在 C++ 程序中使用 getopt 来解析命令行参数。 参数是 -d xxx、-s xxx 和 -?。 我无法捕捉到 -?参数,我想打印一个标准的使用信息。

while ((c = getopt (argc, argv, "?d:s:")) != -1) {
    switch (c) {
        case 'd':
          ...do stuff
            break;
        case 's':
         ... do stuff
            break;
        case '?':
          // From example on GNU page, seems to capture -d, -s when no args provided.
          // Gets here when -d or -s provided, but no arguments for these options.
        default:
          // shut down
}

尽我所能,我似乎无法捕捉到“-?”自行选择。有什么特别的技巧可以捕捉'?在其自己的?我是否为 getopt 提供了正确的模式(即'?d:s:') 目前,c 被设置为 '?'每当提供无效选项时,即使是“?”不在命令行上提供。

谢谢大家。

【问题讨论】:

  • getopt 使用 ? 作为特殊值的事实是对您的一个赠品,您应该使用它来显示帮助。这就是 -h--help 的用途。遵守这些约定而不是做自己的事是值得的。

标签: c++ getopt


【解决方案1】:

getopt 使用'?' 作为特殊值来表示缺少选项值或未知选项。所以我认为没有任何方法可以使用getopt 来处理'-?'。

我会推荐“-h”作为帮助信息。这是一个常见的约定。

【讨论】:

  • 谢谢约翰 - gotchya,?不适合使用,最好使用-h或--help。
猜你喜欢
  • 2011-12-01
  • 1970-01-01
  • 2014-06-19
  • 2013-09-27
  • 1970-01-01
  • 1970-01-01
  • 2015-01-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多