如何使用c++ getopt_long(),如果我有超过26个选项
How to use C++ getopt_long() if I have more than 26 options?
这是一个相当假设性的问题,但假设我有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程序选项。它是一个用于获取命令行参数的通用库。非常容易和愉快的使用。
相关文章:
- 如果没有malloc,链表实现将失败
- 如何在选项卡视图Qt中设置一个新项目,并保存以前的项目
- 如果我只是不访问queue_front节点的子节点,而是将它们推到队列中呢?还是BFS吗
- std::map<struct,struct>::find 找不到匹配项,但是如果我循环通过 begin() 到 end(),我在那里看到匹配项
- 如果C++类在类方法中具有动态分配,但没有构造函数/析构函数或任何非静态成员,那么它仍然是POD类型吗
- Win32编译器选项和内存分配
- 获取日期异步信号安全吗?如果在信号处理程序中使用,它会导致死锁吗
- 设计一个只能由特定类实例化的类(如果可能的话,通过make_unique)
- 线程,如果else语句,都是错误的上下文切换后,会发生什么
- 如果编译的源代码是特定于它编译的硬件的,我们如何分发它
- 如果我std::dynamic_pointer_cast并且底层dynamic_cast的结果为null,那么返回的sh
- C/C++预处理器是否可以检测一些编译器选项
- 是否有C++编译器选项允许激进地删除所有函数调用,并将参数传递给具有空体的函数
- C++擦除(如果存在)
- 如果应用程序从安装选项启动,则加载库失败,错误代码为 126
- 如果我使用c++11功能编译一个文件,同时将其链接到一个没有c++11编译器选项编译的库,会有什么问题吗
- 如何使用c++ getopt_long(),如果我有超过26个选项
- 用c++编写一个菜单程序,让用户从选项列表中进行选择,如果输入的不是其中一个选项,则重新打印该列表
- 如果没有"-annalyze"选项,"clang check"做什么
- 如果我包含"-ansi"编译器选项,为什么我的 C++0x 代码无法编译?