C++ 类似子命令的参数解析

Kal*_*ish 5 c++ command-line-arguments

我正在用 C++ 编写一个程序,其行为预计类似于 SVN、systemctl 或其他一些工具:

./a.out SUBCOMMAND [OPTION]... arguments-for-the-subcommand
Run Code Online (Sandbox Code Playgroud)

一个例子如下:

./a.out remove --recursive directory1 directory2
Run Code Online (Sandbox Code Playgroud)

--recursive选项仅对删除子命令有效。

我目前正在使用 Boost.ProgramOptions,但在我的尝试中没有运气(我现在唯一拥有的是一个接受 GNU getopt 方式参数的程序)。尽管我更喜欢经过广泛测试的东西,但如果它是可移植的并且能够正常工作,那么切换到另一个库就没有问题。

提前致谢,如果问题没有得到很好的解释,我们深表歉意。

最好的问候,卡尔里什。

PS:不确定这是否有任何帮助,但我目前正在使用 GCC 4.7.2。

Som*_*ude 2

实际上,使用 Boost 程序选项应该非常简单,因为您可以轻松构建多个选项列表。

您为每个子命令创建一个,然后检查argv[1]子命令是什么并使用正确的选项列表。