Probleme bei der Programm-Argumentübermittlung



  • Hey Leute,

    ich möchte ein Programm schreiben, welches durch die Parameter aus char* argv[] meiner main(...) bestimmte Methoden ausführt (ich denke ihr wisst was gemeint ist). Ich habe nun zuerst versucht direkt auf die Argumente mit argv[POSITION] zuzugreifen, jedoch bekomme ich dadurch lediglich Ergebnisse wie "0x55dbeeffded0", was mir stark nach einem Speicherplatz aussieht (ist ja auch ein Char-Pointer Array 🙄 ?)
    Also habe ich versucht die Parameter einfach in Strings zu konvertieren um mit diesen dann besser verfahren zu können, jedoch bekomme ich die gleichen Werte. Habe ich bei der Implementierung vielleicht etwas vergessen?

    #include <string>
    #include <iostream>
    #include <vector>
    
    int main(int argc, char* argv[])
    {
    
        std::vector<std::string> argv_s ;
        for(int i = 0 ; i < (argc - 1) ; i++)
        {
            std::string tmp(argv[i]);
            argv_s.push_back(tmp);
            std::cout << argv_s.at(i) << std::endl;
        }
    
        //Inhalt des Vecs wird ausgegeben
        for(int i = 0; i < argv_s.size(); i++)
        {
            std::cout << &argv_s.at(i) << std::endl;
        }
    
        ...
    
    }
    

    Vielen Dank im Voraus,

    crsf1re



  • bekomme ich dadurch lediglich Ergebnisse wie

    Code!

    std::cout << argv[0] << "\n";
    

    sollte den Programmnamen ausgeben.

    Betriebssystem? Compiler?



  • Wie startest du das Programm?



  • Ich bin auf Linux unterwegs und nutze CLion mit gcc. Die Parameter übergebe ich mit Hilfe von einem Dialogfenster https://prnt.sc/hn4w3d[


  • Mod

    std::cout << &argv_s.at(i) << std::endl;
    

    Warum & ?



  • Die Argumente musst du zur Laufzeit angeben, nicht beim Übersetzen.



  • camper schrieb:

    std::cout << &argv_s.at(i) << std::endl;
    

    Warum & ?

    Ich hatte das & noch in einer Vorgängerversion, jedoch ändert sich durch das weglassen leider nichts am output



  • manni66 schrieb:

    Die Argumente musst du zur Laufzeit angeben, nicht beim Übersetzen.

    Ja ich weiß, aber der Debugger gaukelt das dem Programm durch diese Option ja vor, oder nicht?



  • crsf1re schrieb:

    manni66 schrieb:

    Die Argumente musst du zur Laufzeit angeben, nicht beim Übersetzen.

    Ja ich weiß, aber der Debugger gaukelt das dem Programm durch diese Option ja vor, oder nicht?

    Keine Ahnung was deine IDE da macht. Das ist aber kein C++ Problem.


Log in to reply