C++:
Lesen von Kommandozeilenargumenten
So geht’s:
In C++ kannst du mit int argc
und char *argv[]
arbeiten, die im Hauptfunktionsheader stehen. argc
zählt die Argumente, argv
ist ein Array der Argumentwerte.
#include <iostream>
int main(int argc, char *argv[]) {
std::cout << "Anzahl Argumente: " << argc << std::endl;
for (int i = 0; i < argc; i++) {
std::cout << "Argument " << i << ": " << argv[i] << std::endl;
}
return 0;
}
Ausgabe könnte sein für ./programm Hallo Welt
:
Anzahl Argumente: 3
Argument 0: ./programm
Argument 1: Hallo
Argument 2: Welt
Tiefgang:
Kommandozeilenargumente sind ein Langzeitstandard. Sie gehen zurück auf C und UNIX. In modernen C++ Projekten nutzen einige Entwickler Bibliotheken wie boost::program_options
oder TCLAP
für mehr Flexibilität und leichtere Syntax.
Die Standardimplementierung (argc
und argv
) hält Dinge einfach, kann aber knifflig werden, wenn Argumente zusätzliche Verarbeitung erfordern oder nicht nur Strings sind.
Eine Alternative für einfache Fälle könnte die Environment Variable sein, aber das ist weniger direkt und nutzerfreundlich.
Siehe auch:
- CppReference über
main()
: https://en.cppreference.com/w/cpp/language/main_function - Boost Program Options Bibliothek: https://www.boost.org/doc/libs/release/libs/program_options/
- TCLAP, eine templatelastige Bibliothek: http://tclap.sourceforge.net/
- POSIX-Standard für Argumente: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap12.html