C++ Dateien in C++ dateien integrieren



  • Hallo Leute!
    Ich bin ein noch fast überhaupt nicht erfahrener "Programmierer".
    Ich würde mir gerne zum lernen (C++ und Latein 🙂 ) ein Vokabeltrainer programmieren! Aber es gibt ein Problem: Da ich neu bin habe ich wenig Ahnung, und habe mir zwei Bücher mit C++ Wissen angeeignet, einmal: C++ Programmieren mit einfachen Beispielen von Dirk Louis (Von meinem Vater, also schon etwas älter, aber taugt noch, denk ich ^^) und Schrödinger programmiert C++ -- Das etwas andere Fachbuch von Dieter Bär (leider keine Links 😕 ).
    Ich habe mir gedacht ich mache ein Menu, welches auch schon steht, mit drei Punkten: 1 - Vokabeln erweitern, 2 - Vokabeln lernen, und Ende. Ich habe aus dem ersten Buch von oben, viel Wissen erhalten, wie man eine Datei erstellen lässt, wo man auch Sachen erweitern kann, nur ich muss sie noch irgendwie in die Menuauswahl.cpp (wäre main.cpp) integrieren!
    Ich habe schon eine If Schleife gemacht, dass wenn ich 1 eingebe, bis jetz nur ein Text mit 1 für mich zur Kontrolle, dass es funktionierte, ausgab. Bei zwei habe ich dasselbe gemacht nur mit 2, und bei 3 return 0; , also beenden. In der If Schleife muss jetzt der Befehl zum Öffnen der Erweitern.cpp (die Datei, wo man Vokabeln eingeben kann) hinein, den ich leider nirgends gefunden habe 😕
    Ich hab aber in den Büchern auch nich ganz verstanden, was welche Endung für "Auswirkungen" hat (Es wäre sehr hilfreich, wenn jemand mir dies auch erläutern könnte, und ob es auswirkungen auf das einfügen hat!)Ich habe bis jetz nur .cpp Dateien!

    So und jetz nochmal eine Zusammenfassung, was ich benötige 🙂 :
    - Den Befehl um eine Datei in eine andere zu integrieren
    - Eine kleine Erklärung zu den Endungen

    Danke schonmal im Voraus!

    Angenehme Nacht,
    Euer Knollee!
    P.S. Bin neu im Forum, sorry für die Rechtschreibfehler und falls Sätze unschlüssig sind, ich werde sie Morgen nochmal überarbeiten, falls nötig!



  • In der If Schleife muss jetzt der Befehl zum Öffnen der Erweitern.cpp (die Datei, wo man Vokabeln eingeben kann) hinein, den ich leider nirgends gefunden habe

    In deiner fertigen exe gibt es keine Erweitern.cpp mehr. Du musst also main.cpp sagen, welche Funktionen und/oder Klassen dort drin stecken. Das macht man mit Headerdateien (.h oder .hpp).
    Nehmen wir an, du hast eine Funktion einlesen, so ähnlich wie diese hier:

    void einlesen(std::map<std::string, std::string>& vokabeln)
    {
        std::cout << "Deutsch: ";
        std::string de;
        std::getline(std::cin, de);
    
        std::cout << "Latein: ";
        std::string latein;
        std::getline(std::cin, latein);
    
        vokabeln.emplace(de, latein);
    }
    

    Diese soll jetzt in einer Schleife in deiner main-Funktion aufgerufen werden. Damit das Funktioniert, muss die Funktion in dieser cpp-Datei bekannt sein. Dafür braucht der Compiler nur die erste Zeile, die Rückgabetyp, Name und Parameter definiert; der Funktionskörper (die {...}) gehört nicht dazu. Am Ende kommt da noch ein Semikolon hin (anstatt der geschweiften Klammern)

    void einlesen(std::map<std::string, std::string>& vokabeln);
    

    Das kannst du jetzt einfach an den Anfang der main.cpp schreiben und nun kannst du in der main.cpp die Funktion einlesen verwenden. Wenn du aber diese Funktion in mehreren cpp-Dateien verwenden willst, dann ist das recht umständlich. Besser, du lagerst diese Zeile in eine eigene Datei aus: Eine Headerdatei.

    #pragma once
    #include <string>
    #include <map>
    void einlesen(std::map<std::string, std::string>& vokabeln);
    

    Die kannst du zum Beispiel Erweitern.h nennen (so wie die cpp-Datei, nur mit .h als Endung). In der main.cpp und allen anderen, in denen du die einlesen-Funktion verwenden willst, musst du nur noch

    #include "Erweitern.h"
    

    oben hinschreiben und du kannst die Funktion verwenden.

    Zum Thema if-Schleife: http://if-schleife.de/

    Das Thema mit den Headerdateien sollte eigentlich in mindestens einenem deiner Bücher vorgekommen sein, also bitte zumindest diesen Teil nochmal durcharbeiten. Für weitere Fragen wäre es außerdem hilfreich den Code, den du bereits hast in die Frage zu integrieren. Falls dieser schon etwas länger ist, bitte diesen Thread hier beachten: http://www.c-plusplus.net/forum/304133



  • Es gibt keine if-Schleifen.

    Was hast du für Probleme mit dem Integrieren? Du kannst Header Dateien machen, in denen du deine Klassen oder Funktionen deklarierst und in der cpp implementierst du sie. In einer cpp kannst du dann die Header Datei inkludieren und dann die Klassen verwenden. Sollte das nicht in jedem Buch ganz am Anfang stehen? Oder hast du andere Probleme?



  • @Mechanics Nein, das stand leider nicht in beiden Büchern 😞

    Aber ich werd mich morgen nochmal dran setzen und mal zeigen wie ich es gemacht hab. Ich habe auch in der Erweitert.cpp (welche ich morgen zu .h ändern werde) mir ein Beispiel an einem Buch genommen, der die Vokabeln, im Momment noch nur in Latein in eine .txt Datei schreibt! Bis jetz kann man wenn man die Erweitert.cpp Ausführt eine Vokabel eingeben und diese wird unten dran geschoben, morgen werd ich auch noch die Letzte Vokabel, die eingegeben wurde anzeigen lassen, damit ich nich welche doppelt eintrage.

    Ich habe übrigens mit

    #include <fstream>
    

    gearbeitet!



  • Also ich habe jetz schon fest gestellt, dass es If-Abfragen sind ^^
    Aber was mir fehlte war der Befehl, dass meine If-Abfrage die Datei aufruft!
    Hier meine If-Abfrage:

    //Auswahl der Punkte
            if (auswahl == 1)
            {
                cout << "1";
    
                return 0;
            }
            else if (auswahl == 2)
            {
                cout << "2";
    
                return 0;
            }
            else if (auswahl == 3)
            {
                return 0;
            }
    


  • Ok hab mein Fehler gefunden, ich dachte, dass ich gelesen hab, dass es ein Befehl gibt, um die Dateien abzurufen, doch dann hab ich nochmal nachgeguckt und festgestellt, dass es garnicht so schwer war 🙂
    Danke trotzdem für die Antworten!

    Knollee



  • Knollee schrieb:

    Ich bin ein noch fast überhaupt nicht erfahrener "Programmierer".
    Ich würde mir gerne zum lernen (C++ und Latein 🙂 ) ein Vokabeltrainer programmieren!

    Vielleicht solltest Du damit beginnen, Dein Programm in eine einzigen *.cpp - Datei zu schreiben.
    Mir scheint das für einen blutigen Anfänger erst mal die einfachste Lösung und Dein Vorhaben ist auch nicht dermaßen mächtig, dass man es dringend in mehrere Quelldateien zerlegen müsste.


Log in to reply