Übergabeparameter (char Pointer) erweitern



  • Hallo Leute,

    ich übergebe an mein C++ Programm einen Dateipfad. => programm.exe c:\test
    Das Ergebnis will ich nach "Dateipfad" + ".neu" speichern.

    Meine Main-Methode sieht so aus:
    int main (int argc, char **argv)

    Somit ist argv[1] der Pointer auf den ersten Parameter.

    Wie kann ich diesen nun um ".neu" erweitern?

    Ich versuche auch den Char Pointer in ein Char Array zu wandeln, aber das geht nicht. Warum nicht?
    char tst[] = *argv[1];
    Fehler:
    error C2440: 'initializing' : cannot convert from 'char' to 'char []'

    Kann mir das mal jemand erklären. Bzw. wie kann ich einen Pointer zurück zum Array wandeln?

    Wäre sehr dankbar!

    Gruß



  • std::string neu(argv[1]);
    neu += ".neu";
    

  • Administrator

    Ich würde dir vorschlagen, dass du nicht mit den char-Zeigern arbeitest, sondern zuerst die Sache in C++ Objekte umwandelst. So geht das ganze wesentlich leichter von der Hand:

    #include <vector>
    #include <string>
    
    int main(int argc, char* argv[])
    {
      std::vector<std::string> arguments(argv, argv + argc);
    
      // ...
    
      return 0;
    }
    

    Jetzt hast du std::string Objekte, welche man einfach bearbeiten kann.

    Grüssli



  • Hallo.

    Erstmal danke für eure Antworten!

    Aber ich glaube mit dem String funktioniert das nicht, weil ich folgendes nutze:
    ifstream in (argv[1], ios::in|ios::binary|ios::ate);
    (selbes bei ofstream, nur eben mit "erweiterem Pfad")

    D.h. ich nutze als erstes Argument einen Charpointer. Und das funktioniert m.E. mit der string-Klasse nicht.
    Oder kann ich das zurück in einen char-Pointer wandeln?

    bin noch recht neu in C++ ^^

    Danke nochmals
    gadget



  • String zu C-String geht per .c_str() Methode.



  • hallo.

    nochmals danke. war doch ein super tipp.

    man kann dann den string mittels c_str() zu einem char pointer machen.

    viele grüße
    gadget


Anmelden zum Antworten