Przetwarzanie argumentów wiersza poleceń
• tech • 208 słów • 1 minuta czytania
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 jednym z programów w C++, ale na planach się skończyło. Ba, nawet myślałem nad tym, aby zaimplementować jakąś obsługę linii poleceń.
Ten prosty programik napisałem ostatecznie w Perlu korzystając z modułu Getopt::Std. Choć właściwie był planowany do napisania w C++, ale skoro mały i prosty to w Perlu zajęło kilka linijek kodu plus te nieszczęsne argumenty wywołania ;)
I tak temat znów powrócił.
Perl ma swój Getopt::Std, PHP - getopt1, a co ma C++?
Ano, coś ma! Odpaliłem Google i po kilku sekundach znalazły się ciekawe rozwiązania, poczynając od prostych klas, przez biblioteki i rozbudowane frameworki:
- CCmdLine - A command line parser
- Parsing Command Line Arguments
- Templatized C++ Command Line Parser Library
- 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 dopiero w “praniu” i nie wykluczone, że sam coś naskrobię, co na pewno będzie mi odpowiadać ;)
Przypisy
-
Funkcja nie dostępna na platformie Windows. ↩︎
Komentarze (2)
“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 nie ma w std, ani STL, bo nie znalazłem w żadnych referencjach wzmianki o tym.
Perl sam sobie parsuje
@ARGV
, PHP korzysta z *nixowego getopt-a. W C jest getopt zgetopt.h
, ale to z glibc-a.