main parameter
-
Tach,
Ich möchte die main Funktion mit Parametern starten lassen. -a und -rm stehen zur Verfügung:
if (argv[1] == "-rm" || argv[1] == "-remove") { delEntry(); } else { cout << "Usage:" << endl<< endl<<"-rm: remove entry"<<endl<<"-a: add entry"<<endl<<endl ; cout << argv[1] << endl; }Dummerweise wird immer der elseblock abgearbeitet, nicht die if Anweisung. Auch wenn die Paramter stimmen. Woran mag das wohl liegen?
-
Das liegt daran, dass du Zeiger vergleichst und nicht Strings. Bei
argv[1] == "-rm"ist
argv[1]vom Typchar*, und das Stringliteral"-rm"kann implizit zuconst char*konvertiert werden. Folglich vergleichst duchar*undconst char*, also die Adressen.Verwende
strcmp(), nachzulesen auf www.cplusplus.com.Edit: Blöder Formulierungsfehler.
-
Ich danke dir.
-
ahso, sollte die If-anweisung nicht etwa so aussehen ?
if ((argv[1] == "-rm") || (argv[1] == "-remove")) // ...
-
lk schrieb:
ahso, sollte die If-anweisung nicht etwa so aussehen ?
if ((argv[1] == "-rm") || (argv[1] == "-remove")) // ...Nö, wegen den Anführungszeichen brauchst man noch ein zusätzliches Klämmerchen um die Vergleiche

-
Nexus hat doch bereits geschrieben, dass du dafür strcmp benutzten musst..
-
Hi,
also ich habe mir angewöhnt, jedesmal die main-Parameter gleich in einen vector<string> zu packen ... ist auch nur ein Einzeiler und viel leichter zu handhaben.
int main(int argc, char* argv[]) { vector<string> args(&argv[0], &argv[argc]); ...(schnell hingeschrubbte Variante ... noch nicht "off-by-one"-fest)
Gruß,
Simon2.