C++ Kommandozeilen parameter übergeben

honky-tonk

Commodore Pro
🎅 Nikolaus-Rätsel-Elite
Registriert
Feb. 2009
Beiträge
4.375
Hey Leute,
ich möchte bei meinem C++ programm über die kommandozeile argumente übergeben. Beim googlen habe ich nur die möglichkeit über main(argc, argv) gefunden. das bedeutet ja man kettet alle parameter aneinander also "programm 1 2 6 7".

Viele andere programme nutzen aber ein format dass so aussieht: programm -param 5 -anz 6

wie kann ich das in c++ umsetzen? hat vll jemand n link?

danke schonmal!
 
Du kannst beispielsweise in einer Schleife testen, ob das Argument mit einem - beginnt, und wenn ja, testest du das Argument gegen deine zu bearbeitenden Elemente und nutzt den nächsten Parameter entsprechend.
 
Ja dann gib es auch so an, ganz einfach. Rudimentär:
Code:
#include <iostream>
#include <string>
using namespace std;

int main( int argc, char **argv )
{
	for( int i = 1; i < argc; i++ ) // argv[0] ist das aktuelle Programm
	{
		string param = argv[i],
			nextparam = "";
		if( i + 1 < argc ) nextparam = argv[i + 1];
		
		if( param[0] == '-' ) // parameter gefunden
		{
			// weitere bearbeitung
			if( param == "-param" )
			{
				irgend_ein_schalter = nextparam;
				++i; // erhöhen, da der nächste parameter schon als wert abgegriffen wurde und es definitiv kein schalter ist
			}
			else if( param == "-anz" )
			{
				naechster_schalter = nextparam;
				++i;
			}
		}
	}
	
	return EXIT_SUCCESS;
}
 
Thx Yuuri...sieht soweit brauchbar aus ^^ und die parameter werden dann also immer je mit leerzeichen getrennt!? bzw schon vorher geparsed

@ rumbalote: was du meintest ist getopt() oder!?
 
Gibt auch ein paar brauchbare getopt() Ports nach Windows.

Wenn man boost benutzen möchte, gibt's da boost::program_options.
 
Zurück
Oben