Kommandozeile ?



  • Hallo,

    ich möchte per kommandozeile paramenter an string variablen übergeben.
    ich bekomme den error das ich char nicht in string umwandeln kann.
    also habe ich das arguement in

    int main(int argc, string**argv)
    

    geändert.
    folge =>cannot convert string to string.

    gibt es irgentwo vielleicht ein beispielprogramm? kommandozeilenübergabe habe ich bisher noch nicht gemacht. 😕

    int main(int argc, char **argv)
    
    {
        //////////////////////////////////////////////////////////////////////////////////////////////////////////////
        string paraZoneID,paraStartX,paraStartY,paraStartZ,paraEndX,paraEndY,paraEndZ, paraWpOption,paraGUID;//////////
        //////////////////////////////////////////////////////////////////////////////////////////////////////////////
    
                            argc=9;                                          // 9 argc
                            argv[1] = paraZoneID;                           //-> ZoneID (kontinent)
                            argv[2] = paraStartX;                          //-> Start X
                            argv[3] = paraStartY;                         //-> Start Y
                            argv[4] = paraStartZ;                        //-> Start Z
                            argv[5] = paraEndX;                         //-> Ende X
                            argv[6] = paraEndY;                        //-> Ende Y
                            argv[7] = paraEndZ;                       //-> Ende Z
                            argv[8] = paraWpOption;                  //-> Wp Option
                            argv[9] = paraGUID;                     //-> GUID
    


  • Wenn du die Parameter als strings haben möchtest, reicht ein einfaches

    std::vector<std::string> args(argv, argv + argc);
    

    Achja...

    #include <vector>
    #include <string>
    

    ...nicht vergessen.



  • tut mir leid ich kenne mich mit kommandozeile überhaupt nicht aus

    werden die übergeben variablen automatisch in

    vector<string> args(argv, argv + argc);
    

    gespeichert?

    ich muss also nichts mehr tun ?



  • Ja, alle Argumente, die dem Programm bei Start übergeben werden, hast du dann im vector args.



  • wow...
    einfacher gehts garnicht

    super vielen dank



  • Falls du dann noch mehr tun willst, als nur ein paar Argumente zu übergeben, wäre evtl boost::program_options einen Blick wert. http://www.boost.org/doc/libs/1_47_0/doc/html/program_options.html



  • Wenn ich mein programm starten möchte hängt es sich natürlich auf weil es keine argumente bekommen hat. also habe ich mir gedacht ich könnte es mit empty machen, was leider aber nicht funktioniert, da der vector auch ohne arguments nicht empty ist.
    ich muss vorher clear() ausführen, aber das bringt mir nichts wenn ich nicht überprüfen kann ob der vector leer ist oder nicht =(.

    int main(int argc, char **argv)
    
    {
    vector<string> args(argv, argv + argc);
    //args.clear();
    
    if(args.empty())
    {
    cerr << " No arguments found!";
    return -1;
    
    }
    }
    


  • Standardmäßig wird als erstes Argument meist der Name des Programmes (mit Pfad) übergeben). Teste also besser auf Größe 1.



  • stimmt... danke 🙂


Anmelden zum Antworten