komandozeilenargumente



  • Hallo, ich habe noch eine frage zu kommandozeilenargumenten:
    warum gibt mir mein nicht die möglichen argumente für mein programm aus, wenn ich mein programm so ausführe: ./codeit -h

    if (argv[1] == "-h")
    	{
    		cout << endl;
    		cout << "./codeit Pfad Modus Passwort";
    		cout << endl;
    		cout << endl;
    		cout << "\tPfad:\n\t\tfür Dateien:\tbla/blub.xyz\n\t\tfür Ordner:\tbla/blub/";
    		cout << endl;
    		cout << endl;
    		cout << "\tModus:\n\t\tzum Verschlüsseln:\tver\n\t\tzum Entschlüsseln:\tent\n\t\tfür Lodatei \"log\"  anhängen";
    		cout << endl;
    		cout << endl;
    		cout << "\tPasswort\n\t\ta-z\n\t\t0-9\n\t\t12 Zeichen maximal";
    		cout << endl;
    		cout << endl;
    	}
    

    Bin für jede Hilfe dankbar!!!



  • Weil du zwei Zeiger vergleichst, nicht zwei Zeichenketten.

    Nutz lieber diese Variante:

    #include <vector>
    #include <string>
    #include <iostream>
    
    int main(int argc, char *argv[])
    {
      std::vector<std::string> arguments(argv, argv + argc);
    
      if (arguments.at(1) == "-h")
      {
        ...
      }
    }
    


  • Man kann C-Strings nicht mit == vergleichen.
    Du solltest die Parameter vorher in ein set<string> bzw. eine map<string,string> schieben.


Anmelden zum Antworten