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

Alternative to unistd.h getopt using c++ stl

本文关键字:getopt unistd 替代 c++stl 使用      更新时间:2023-10-16

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

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

在本机Win32上,只需将wingetopt之类的东西嵌入到您的项目中(BSD许可)。此外,FreeBSD getopt.c可以很容易地移植(尽管它不支持长选项格式)。

解决方案是编写自己的或使用boost。从C++11开始,还没有标准的"getopt"功能。