Befehle aus externer Datei einbinden



  • Ich bin neu hier im Forum, beschäftige mich aber schon eine Zeitlang mit C++.
    Jetzt habe ich allerdings eine Frage auf die ich einfach keine Antwort finde.

    Angenommen ich erstelle auf dem Desktop eine Datei file.txt mit dem Inhalt

    cout << "Text";
    

    gibt es dann eine Möglichkeit diese Befehlszeile mit meinem C++ Programm aus der Datei auszulesen und in mein Programm einzubinden?

    Als Beispiel:

    #include <iostream>
    using namespace std;
    int main(){
    	cout << "Das ist ein Satz";
    	//Hier soll dann die Zeile aus der Datei (s. oben) ausgeführt werden
    	return 0;
    }
    

    Hoffentlich versteht ihr was ich meine. 😃
    Für Antworten bedanke ich mich schonmal im voraus 🙂



  • Wenn du verrätst was du konkret vorhast kann man dir wahrscheinlich besser helfen.



  • finix schrieb:

    Wenn du verrätst was du konkret vorhast kann man dir wahrscheinlich besser helfen.

    Eigentlich nur das was ich schon geschrieben habe.
    Ich möchte das mein Programm auf eine Textdatei mit C++ Code zugreift und diesen dann auch ausführt. Einen tieferen Sinn ergibt das jetzt vielleicht nicht aber ich würde trotzdem gerne wissen ob und wie soetwas geht.



  • Du müsstest diesen Code dann kompilieren bevor du ihn ausführen könntest...
    Ne Dll vielleicht?
    Aber wenn du diese Frage stellst ist das vlt noch zu schwer für dich...kannst dich damit aber mal vertraut machen.

    Oder du verwendest/schreibst eine Lib die den Inhalt der Datei interpretieren kann und keinerlei Neukompilierung bedarf.



  • Da du C++-Code (Quältext) erst kompilierst, ist das nicht möglich! Der Dateiinhalt müsste ja vor der Ausführung ebenfalls kompiliert werden! Du kannst dir aber eine Scriptsprache ausdenken:

    file.txt

    hallo
    name <irgendwas>
    datum
    ende
    

    und das dann auslesen und per "if()" auswerten:

    if (ausgelesene_zeile=="hallo") {cout << "Hallo ";}
    if (ausgelesene_zeile=="datum") {cout << das_datum;}
    ...
    


  • Mist... zu langsam 😉



  • Kuldren schrieb:

    Du müsstest diesen Code dann kompilieren bevor du ihn ausführen könntest...
    Ne Dll vielleicht?
    Aber wenn du diese Frage stellst ist das vlt noch zu schwer für dich...kannst dich damit aber mal vertraut machen.
    Oder du verwendest/schreibst eine Lib die den Inhalt der Datei interpretieren kann und keinerlei Neukompilierung bedarf.

    Wie meinst du das ich muss den Code vorher kompilieren???
    Ich bin vielleicht kein Experte aber wie man ein einfaches Programm schreibt, kompiliert und ausführt, so weit bin ich schon 😉 .



  • Theoretisch möglich ist sowas schon.

    Du hast dabei folgende Möglichkeiten (Auszug)

    1. Schreibe einen Parser der alle Funktionen unterstützt die du brauchst.
    std::ifstream in("dateiname.endung");
    std::string tmp;
    if ((in >> tmp) == "cout")
    {
    
    }
    

    usw.

    Ist schon recht kompliziert.

    1. Du compilierst die datei (inklusiv Wrapper) beim laden und linkst sie dynamisch. Auch nicht wirklich leichter.

    2. Das was du willst sieht sehr nach dem Einbinden einer Skriptsprache aus. z.B. für LUA gibts da bereits fertige Interpreter für C/C++. Möglicherweise lässst sich auch was mit C-Syntax finden.
      _______________

    Du siehst: Es ist theoretisch möglich aber gar nicht so einfach.



  • Ich bin vielleicht kein Experte aber wie man ein einfaches Programm schreibt, kompiliert und ausführt, so weit bin ich schon .

    Dann weißt du ja dass du deinen Code kompilieren musst um dann dein Programm ausführen zu können!
    Also müsstest du den Code aus der Datei ... wenn es denn echter C++ code wäre und keine ausgedachte skript-lib diesen kompilieren...
    Und das zur Laufzeit zu machen wird schwer....



  • Besserwisser;) schrieb:

    Da du C++-Code (Quältext) erst kompilierst, ist das nicht möglich! Der Dateiinhalt müsste ja vor der Ausführung ebenfalls kompiliert werden! Du kannst dir aber eine Scriptsprache ausdenken

    hey danke das ist eine gute idee werd ich direkt mal in die tat umsetzen. 🙂 🙂 🙂



  • Kuldren schrieb:

    Ich bin vielleicht kein Experte aber wie man ein einfaches Programm schreibt, kompiliert und ausführt, so weit bin ich schon .

    Dann weißt du ja dass du deinen Code kompilieren musst um dann dein Programm ausführen zu können!
    Also müsstest du den Code aus der Datei ... wenn es denn echter C++ code wäre und keine ausgedachte skript-lib diesen kompilieren...
    Und das zur Laufzeit zu machen wird schwer....

    Ja sorry ich ich hab dich falsch verstanden



  • @Besserwisser;)
    Das mit dem Scripten verstehe ich soweit aber mit welchem Befehl lese ich die verschiedenen Zeilen?



  • Du kannst (zur Übung) auch versuchen eben LUA zu verwenden, wenn dir deine eigene Skriptsprache nicht ausreicht (was bei Aufgaben die über die Ausgabe des Datums oder eines Namens hinausgehen echt umfangreich werden kann!)

    aber mit welchem Befehl lese ich die verschiedenen Zeilen?

    EDIT: Lass das mit LUA und schau dir lieber ein C++ Tutorial an



  • Kuldren schrieb:

    Oder du verwendest/schreibst eine Lib die den Inhalt der Datei interpretieren kann und keinerlei Neukompilierung bedarf.

    Kannst du mir da irgendein Tutorial oder so was empfehlen?



  • Dirty, aber zweckmäßig:

    // bla, dein Code....
    #include "DeineTextdatei.txt"
    // weiterer Code.
    

    Sobald du die Datei inkludiert hast, wird der Code vom Präprozessor reinkopiert und mitkompiliert 😉





  • mikey schrieb:

    Dirty, aber zweckmäßig:

    // bla, dein Code....
    #include "DeineTextdatei.txt"
    // weiterer Code.
    

    Sobald du die Datei inkludiert hast, wird der Code vom Präprozessor reinkopiert und mitkompiliert 😉

    Das ist allerdings auch nicht schlecht. Muss ich in #include "blabla.txt" den Pfad zur Datei mit angeben?

    #include "C:/.../DeineTextdatei.txt"
    

    Kuldren schrieb:

    Tutorials:
    http://c-plusplus.net/cms/modules.php?op=modload&name=Downloads&file=index

    Das sagt mir jetzt so direkt auch nichts, könntest du das etwas definieren?



  • Ich versteh nicht, weswegen manche Leute so kompliziert denken.

    Window: Ja, du musst den vollen Pfad angeben, wenn sich die Datei nicht im selben Ordner wie dein Programm befindet.



  • Bin davon ausgegangen dass du während das Programm läuft die Datei verändern möchtest!
    So kannst du ja gleich eine cpp Datei verwenden, denn so kommst du um die Neukmpilierung nicht herum..



  • Kuldren schrieb:

    Bin davon ausgegangen dass du während das Programm läuft die Datei verändern möchtest!
    So kannst du ja gleich eine cpp Datei verwenden..

    Eigentlich war das ja auch so gedacht das die .exe auf die datei zugreift und dann die Befehle ausführt.


Anmelden zum Antworten