Parsowanie argumentów linii poleceń zawsze sprawiało udrękę, na szczęście do tej pory zbytnio nie korzystałem z tych możliwości.
Kiedyś myślałem nad wykorzystaniem tego w pewnym planowanym programie w C++, ale na planach się skończyło. Ba, nawet myślałem nad tym, aby zaimplementować jakąś klasę do obsługi linii poleceń.
Pewien prosty programik napisałem właśnie w perlu korzystając z modułu Getopt::Std, choć właściwie był planowany w C++, ale skoro mały programie to w perlu zajęło kilka linijek plus te nieszczęsne argumenty wywołania ;)
I tak temat znów powrócił.
Perl ma swój Getopt::Std, PHP - getopt (nie dostępna na platformie Windows), a co ma C++?
Ano, ma, odpaliłem google i po kilku sekundach znalazły się ciekawe rozwiązania, poczynając od klas, przez liby po jakiś framework:
- CCmdLine - command line parser
- Parsing Command Line Arguments
- Templatized C++ Command Line Parser
- CLAP (Command Line Argument Parsing)
- CmdLine: a C++ option-parsing framework
- Parsing command line arguments using Glib
- Parse a command line string into tokens (in C, C++, & Lisp)
- Command parser – prosta, ciekawa implementacja
Nie bawiłem się jeszcze tym, ale myślę, że CCmdLine mi najbardziej podpasuje. Choć wszystko wyjdzie w "praniu" i nie wykluczone, że sam cos naskrobie, co na pewno mi będzie odpowiadało ;)
„Perl ma swój Getopt::Std,…” i AFAIK C++ też ma swój getOpt w std, ba to pewnie ten sam getOpt jest … myle sie?
Chyba w STL, ale nie znalazlem w zadnych referencjach wzmianki o tym.
Perl sam sobie parsuje @ARGV, PHP korzysta z *nixowego getopt’a.
W C jest getopt zadeklarowany w getopt.h, ale to z glibc-a.