使用 c++ stl 替代 unistd.h getopt

Alternative to unistd.h getopt using c++ stl

我正在为我们将在各种平台上使用的用户编写一个 C++ 命令行应用程序。出于这个原因,我只使用 stl 编写。我想知道 stl 是否有一种很好的方法来解析类似于 unistd.h/getopt.h 中使用的 getopt 函数的输入参数(因为据我所知,这些不是平台独立的)。我已经考虑过做类似 while/for loopswitch 语句的事情,但想知道是否有更优雅的东西。 C++11 可以,boost 不行。

解决办法是自己写或者使用boost。从 C++11 开始,没有标准的 "getopt" 功能。

确实在标准 C++ 中没有办法,但 getopt 是一个 POSIX 标准,它涵盖了很多平台(Linux、*NIX、*BSD , MacOS, iOS, Android, Cygwin).

在本机 Win32 上只需嵌入类似 wingetopt into your project (BSD-licensed). Also FreeBSD getopt.c 的内容即可轻松移植(尽管它不支持长选项格式)。