Von string zum const char*



  • Nicht sofort schreiben, ich solle keinen Thread deswegen aufmachen.
    JA, es gab dieses thema schon in vielen Threads aber da ich erst seit vorgestern mit C++ arbeite hat mir googeln, in den FAQs und im Forum nachschauen nichts gebracht.
    Ich wusste nämlich nicht wie ich das Gelesene in mein "Projekt" einfügen kann.

    Mein Ziel : Man gibt in ein Eingabefeld einen Dateinamen ein, z.B. "Blender.exe"
    Dieser String soll jetzt in den Befehl WinExec eingefügt werden und die gewünschte Datei wird ausgeführt.
    Nun ist das Problem, dass WinExec einen Const Char* verlangt, ich aber aus dem Eingabefeld einen string herausbekomme.

    Gibt es da eine möglichkeit das zu konvertieren?

    Programm : Dev-C++ 4

    MfG Schrimms



  • std::string?, dann string::c_str()



  • Ja es ist ein std:string

    #include <iostream.h>
    #include <stdlib.h>
    #include <string.h>
    #include <windows.h>
    #include <string>
    
    int main()
    {
          std::string progs;
          std::string password("pw");
          string pweingabe;
          cin>>pweingabe;
          if(pweingabe==password)
          {
           cout<<"\nPasswort erkannt.";
           cin>>progs;
           WinExec(progs,SW_SHOW);
          }
    }
    


  • dann 1.

    progs.c_str();
    

    und 2. lege ich dir ans herz dir eine aktuelle IDE zu besorgen.(z.B. Visual Studio 2008 Express(ist kostenlos) Dev-C++ ist nicht so der hit (hab ich auch mal lernen müssen 😉 ))



  • Danke für deine schnelle und siegbringende Antwort 🙂
    Hat auf anhieb geklappt.
    Und ich werde wohl auch deinen Ratschlag befolgen und auf Visual Studio umsteigen.
    Da wäre nur noch eines - wenn die Dateien in nem Unterordner im gleichen verzeichnis sind. Zum Beispiel ist die C++-Datei aufm desktop und es gibt einen unterordner "Programme"
    Wie kann ich da sozusagen vor jede Eingabe ein "programme/" setzen, ohne es immer eintippen zu müssen?

    MfG Schrimms



  • string whatever="programme\\",temp;//bzw. "programme/" müßte unter linux gehen (ohne garantie)
    /*in temp einlesen
    ...
    */
    whatever.append(temp);
    

    Gern geschehen wer freundlich fragt kriegt auch freundliche antworten 🙂



  • Okay danke für die Hilfe, auch wenn ich es jetzt anders gemacht hab 😛

    std::string progs;
    std::string path("Games&More\\");
    WinExec((path += progs).c_str(),SW_SHOW);
    


  • auch meine gottgleiche geistesgegenwart ist um 00:41 manchmal etwas eingeschränkt.
    😉 😃



  • Fencer schrieb:

    auch meine gottgleiche geistesgegenwart ist um 00:41 manchmal etwas eingeschränkt.
    😉 😃

    Das männliche Ego. Immerwieder eine faszination. 😉



  • "Bückling mein Cäsar, bis zum Boden"
    :p


Anmelden zum Antworten