Parameterübergabe wie in den WIN Konsolenanwendungen ?

TheSmile

Mitglied
Hi,
bin gerade dabei mir eine WIN32 Konsolenanwengung zu schreiben, bei der Parameter in der Kommandozeile hinter dem Programm mit übergeben werden.

In den ganzen Konsolenanwendungen unter Windows (Beispiel shutdown.exe) werde die Parameter immer mit einem Bindestrich ("-") vorher angegeben.
(Beispiel shutdown -l -s)

Frage: Gibt es dafür eine Standard Routine?
Wenn ich es selber schreibe, dann ist es ja viel unkonfortabler, einen Character mit mehr als 2 Stellen beim Programmaufruf zu vergleichen, als mit einer Stelle.
(also if (args[1] == 's') ... ist wohl leichter zu vergleichen)

Ich würde aber gerne eine "standardkonforme" - Anwendung schreiben.

Hat jemand einen Tipp für mich?

Vielen Dank,
MfG
TheSmile
 
Nein es gibt ausschließlich 2 möglichkeiten die parameter zu verarbeiten

entweder über argv und argc also die standart konsolen parameter

oder über den parameter string den man sich von windows nochmal extra geben lassen kann, so die ganze komandozeile enthalten is so wie sie eigegeben wurde.

du musst also wirklich vergleichsroutinen schreiben, aber wenn du faul bist gibts auch strcmp() bzw. _strnicmp() oder strncmp() je nachdem was du brauchst..

strcmp() = strings vergleichen, groß kleinschreibung beachten, bis ende des strings
strncmp() = strings vergleichen, groß kleinschreibung beachten, bis anzahl zeichen
_strnicmp() = strings vergleichen, groß kleinschreibung ignorieren, bis anzahl von zeichen

ACHTUNG: die rückgabe der funktionen ist etwas unüblich für programmierer die boolsche werte gewohnt sind...
sie ist 0 wenn die strings gleich sind!

das ist tatsächlich die einzige hilfe die einem die entwickler da in die hand geben.
 
ist vom prinzip doch ganz einfach!
lässt dir die eingabe einfach zurück geben und checkst dann durch!
sagen wir mal du hast insgesamt 4 parameter

dann guckst du einfach immer ob z.B -s im string ist und wenn ja wird die entsprechende funktion mit ausgeführt oder was weiss ich! ist aber nicht viel arbeit! pro paramter vielleicht 2 zeilen code...
 
ein paar tipps noch:
- argc = Argumentencounter (Anzahl der übergebenen Argumente inklusive Programmaufruf)
- argv = Pointer auf char*

Wenn du den *argv[] in nen std::string einliest, kannst du viel komfortabler arbeiten. (ohne strcmp,... )

Gruß.
 
Zurück