gpt4 book ai didi

c++ - 使用 getopt_long (C++) 我如何编写长选项和短选项以同时需要参数?

转载 作者:太空狗 更新时间:2023-10-29 19:49:29 25 4
gpt4 key购买 nike

#include <iostream>
#include <getopt.h>

#define no_argument 0
#define required_argument 1
#define optional_argument 2


int main(int argc, char * argv[])
{
std::cout << "Hello" << std::endl;

const struct option longopts[] =
{
{"version", no_argument, 0, 'v'},
{"help", no_argument, 0, 'h'},
{"stuff", required_argument, 0, 's'},
{0,0,0,0},
};

int index;
int iarg=0;

//turn off getopt error message
opterr=1;

while(iarg != -1)
{
iarg = getopt_long(argc, argv, "svh", longopts, &index);

switch (iarg)
{
case 'h':
std::cout << "You hit help" << std::endl;
break;

case 'v':
std::cout << "You hit version" << std::endl;
break;

case 's':
std::cout << "You hit stuff" << std::endl;
break;
}
}

std::cout << "GoodBye!" << std::endl;

return 0;
}

输出:

./a.out -s
Hello
You hit stuff
GoodBye!

输出:

./a.out --stuff
Hello
./a.out: option `--stuff' requires an argument
GoodBye!

需要解决的冲突 -s 和 --s 都应该说:./a.out: option `--stuff' requires an argument 当使用而不继续时命令后的参数。但只有 --stuff 可以吗?有谁知道我在这里缺少什么?

期望的结果:

./a.out -s
Hello
./a.out: option `--stuff' requires an argument
GoodBye!

./a.out --stuff
Hello
./a.out: option `--stuff' requires an argument
GoodBye!

最佳答案

您的 getopt_long 调用为短选项指定了“svh”,而它应该是“s:vh”。冒号告诉 getopt 需要“s”的参数。

关于c++ - 使用 getopt_long (C++) 我如何编写长选项和短选项以同时需要参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8793020/

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