c++ - getopt加入参数

标签 c++ c parameters parameter-passing getopt

有没有办法用getopt函数解析:

./prog -L -U

同于:

./prog -LU    

这是我的尝试(不工作):

while ((c = getopt(argc, argv, "LU")) != -1) {
    switch (c) {
    case 'L':
        // L catch
        break;
    case 'U':
        // U catch
        break;
    default:
        return;
    }
}

在这个简单的例子中只有 2 个参数,但在我的项目中需要 6 个参数的所有组合。例如:-L-LURGHX-LU -RG -H 等。 getopt() 可以处理这个吗?或者我必须编写复杂的解析器才能做到这一点?

最佳答案

除了缺少大括号,您的代码对我来说工作正常:

#include <stdio.h>
#include <unistd.h>

int main(int argc, char **argv) {
    int c;
    while ((c = getopt(argc, argv, "LU")) != -1) {
        switch (c) {
        case 'L':
            // L catch
            printf("L\n");
            break;
        case 'U':
            // U catch
            printf("U\n");
            break;
        default:
            break;
        }
    }
    return 0;
}
$ ./a.out -LU
L
U
$ ./a.out -L
L
$

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

相关文章:

c - 用 C 输出一首诗,每个单词换行

c - 终端不允许我打印指向末尾没有换行符的字符串的指针 - C

c++ - 如何有效地比较包含 double 的 std::tuple 是否相等

c++ - 渲染器效率

c - MacOS 使用 sysctl() 获取 HW_MACHINE_ARCH 获取 "no such file or directory"

PHP 类变量作为函数参数

arrays - Jenkins Groovy 扩展属性数组

javascript - 将 php 字符串作为参数传递给 php 脚本中调用的 javascript 函数

c++ - 将C++代码编译成汇编然后反汇编

c++ - C++:在constexpr构造函数中初始化成员数组