[C++]string in system() oder ShellExecute()

  • Ahoi,
    ich habe folgendes Problem: ich möchte einen, via TCP empfangenen, string data mit
    data = System::Text::ASCIIEncoding::ASCII->GetString( bytes, 0, i );
    in system() oder Shellexecute() einfügen. Der string enthält ein command, z.B. <C:\\WINDOWS\\system32\\calc.exe> oder <cmd.exe /c ipconfig>. Das Problem ist, das mir der Compiler bei Verwendung von system(data) folgendes ausgibt:
    error C2664: 'system': Konvertierung des Parameters 1 von 'System::String ^' in 'const char *' nicht möglich

    jemand 'ne Idee zur Beseitigung des Problems?

    Gruss

    Caldeum

  • Hallo!
    Ein Paar Ideen:
    -Idee 1: Standard-C++ verwenden
    -Idee 2: Das ist ziemlich unsicher, irgendwelche Kommandos auszuführen, die du per TCP erhälst
    -Idee 3: In Standard-C++ gibt es die Funktion std::string::c_str
    -Idee 4: Für TCP Boost verwenden, das ist auch richtig in Standard-C++ integriert

    Viele liebe Grüße
    The User

  • Das ist alles ganz super, nur sind wir in der Schule auf Visual Studio standardisiert.
    PS: was ist eig. dieses Boost?

  • Oh, dann tust du mir sehr Leid!
    Sorry, aber wenn ich "System::" sehe, reagiere ich immer leicht allergisch. ;)
    Das ist ja ungefähr so, wie wenn an den Schulen Delphi verwendet wird.
    Ich verwende z.B. überhaupt kein Windows, also wäre etwas blöd. Java ist zwar Müll gegenüber C++, aber da muss ich wenigstens nicht für die Schule Windows verwenden.
    Naja egal:
    Der System::String muss auch eine Funktion zur Konvertierung in char* haben. Schau dich ein wenig in der Doku um.
    Boost ist eine sehr große Bibliothek für C++ mit vielen schönen Features:
    -Netzwerk-Programmierung
    -Serialisierung (Speichern von Objekten in Dateien)
    -Reguläre Ausdrücke
    -Zusätzliche Container (also Array-Klassen)
    -Threads
    -...
    Sehr viele dieser Features werden in kürzerer Zeit in den Standard eingehen.
    Ansonsten kann ich übrigens auch Qt empfehlen, damit kann man geile Oberflächen machen.
    Boost und Qt haben zwei entscheidende Vorteile: Die Bibliotheken sind plattformunabhängig (was Compiler und Betriebssystem angeht) und sind Frei (OpenSource).

    Also falls du mal was in der Freizeit programmieren willst... ;)
    http://www.boost.org/doc/libs/1_38_0
    http://www.qtsoftware.org/
    Wir haben im Forum auch eine hübsche Liste mit Bibliotheken angefertigt.

    Viele liebe Grüße
    The User