如何使用c++ getopt_long(),如果我有超过26个选项

How to use C++ getopt_long() if I have more than 26 options?

本文关键字:如果 选项 26个 c++ 何使用 getopt long      更新时间:2023-10-16

这是一个相当假设性的问题,但假设我有3个以相同字母开头的长参数。

--parse or -p
--prune or -r
--pivot or -i

最终我将开始耗尽有意义的单个字母,更重要的是,在GNU getopt_long()配置中很难分配一些有意义的东西。

{"parase", no_argument,       0, 'p'},
{"prune",  no_argument,       0, 'r'},
{"pivot",  required_argument, 0, 'i'}

在这些情况下的最佳实践是什么?

您不必为val成员使用可打印字符。而且,它是int,不是char。它应该只是帮助您识别选项。(意思是,你不需要有相应的短)。

您可以选择大写和小写,为您提供52个短选项,然而许多接受长选项的程序甚至懒得为某些选项分配短选项,迫使用户只使用长选项,这是OK.

0-9可以用来表示。想象一个数据压缩程序,它要么接受-compression=[0-9],要么只接受-[0-9](但我不知道这是否适用于getopt)。

也可以用大写。

我知道这是一个假设的问题,但是有这么多的选项,程序可能做得太多了,或者需要一个配置文件。

我建议您看一下boost程序选项。它是一个用于获取命令行参数的通用库。非常容易和愉快的使用。

相关文章: