Start Parameter
-
tut mir sry aber mit den params der main kenne ich mich net aus
-
Yazoo schrieb:
tut mir sry aber mit den params der main kenne ich mich net aus
Na, dann lernst du es.

Ist ja so ganz einfach.
argc: Argument Count. (Wie viele Argumente)
argv: Argument Value. (Char Array mit den Argumenten; Nutze argc, um hier durchzugehen).
-
ok, das habe ich verstanden.
Ich hab ma was rumprobiert und rausgefunden, dass das erste Argument immer der Name der exe ist.
wie kann man ein hilfe argument machen, ohne das sich das Prog startet?
Also, dass es so aussieht, wie wenn man in cmdping /?eingiebt.
-
Yazoo schrieb:
wie kann man ein hilfe argument machen, ohne das sich das Prog startet?
Also, dass es so aussieht, wie wenn man in cmdping /?eingiebt.
Die Exe wird in jedem Fall starten müssen. Nur diese kann die Parameter auswerten.
Sprich: Erst Parameter analysieren, dann entscheiden was konkret in deiner Anwendung weiter passiert.
cu André
-
Yazoo schrieb:
wie kann man ein hilfe argument machen, ohne das sich das Prog startet?
z.B. so, aber es gibt sich weitere Möglichkeiten (kannst es auch schön in Klassen verschieben, etc. pp. Hängt immer von der Komplexität ab.
int main(int argc, char** argv) { if(argc==2){ string arg = argv[1]; if(arg == "/?") std::cout << "help" << std::endl; } ... }
-
für fortgeschrittene auch boost::program_options erwähnenswert...
-
Yazoo schrieb:
ok, das habe ich verstanden.
Ich habe das nicht verstanden. Ich will einen Stringpapameter übergeben und ihn dann in etwa so auswerten:
if (Parameter1 == "test") { cout<<"BLABLABLA"<<endl; } else if (Parameter1 == "test2") { ... }
-
Das ist doch nicht schwer!
// ... bool foo = false; // bar ;) int main(int argc, char** argv) { for(int i = 1; i < argc; ++i) { std::string currentArg = argv[i]; if(currentArg == "--help") { outputHelp(); // oder sowas return 0; } else if(currentArg == "--someOption") foo = true; else std::err << currentArg << " undefined!" << std::endl; } // code basierend auf den optionen bzw. parametern oben // ... return 0; }Korrigiert mich, wenn ich da falsch liege

Immerhin istoperator==fürstd::stringwohldefiniert und vergleicht nicht die Adressen.
-
Airdamn schrieb:
für fortgeschrittene auch boost::program_options erwähnenswert...
Ich habe mir mal boost::program_options angesehen und es sieht sehr praktikabel aus, jedoch wollte ich es versuchen und erhalte in Visual Studio 2010 folgenden Fehler:
Visual Studio 2010 schrieb:
error LNK1104: cannot open file 'libboost_program_options-vc100-mt-gd-1_41.lib'
Nun würde ich gerne wissen, wie ich die passende Bibliothek finde/compilier und, ob es denn auch ohne lib/dll möglich wäre.
Gruß,
Christian
-
Du musst einige der Boost Libraries, darunter die boost::program_options, builden und dann dazu-linken.
Entweder buildest Du die Boost Libraries selbst:
http://www.boost.org/doc/libs/1_45_0/more/getting_started/windows.htmlOder Du installierst die vorkompilierten Boost Libraries von hier (allerdings sind die immer etwa ein Versions- Schritt im Verzug):
http://www.boostpro.com/download/Simon
-
Es funktioniert prima. Was gibt es zu beachten, wenn ich denn meinen Code dann auf ein unixoides System übertragen will?