Variablen in Datei schreiben



  • ManuP schrieb:

    Suche schon einige Zeit im Internet nach einem geeignetem Beispiel für mein Problem: ich will Variablen in einer Datei Speichern und später wieder auslesen.
    In PHP geht das einfach...

    .. und in C++ auch. Man muss - wie so oft - nur wissen wie's geht.

    Beispiel:

    #include <fstream>
    #include <iostream>
    
    int main()
    {
        using namespace std;
        {
            // --   Schreiben
            int var1 = 45;
            int var2 = 7;
            int var3 = 8;
            ofstream file( "test.txt" );
            file << var1 << ' ' << var2 << ' ' << var3 << endl;
        }
        {
            // --   Lesen
            int var1, var2, var3;
            ifstream file( "test.txt" );
            file >> var1 >> var2 >> var3;
    
            cout << "Gelesen: " << var1 << ' ' << var2 << ' ' << var3 << endl;
        }
        return 0;
    }
    

    Gruß
    Werner



  • @Wernen

    Danke mal für das Beispiel...

    So muss ich jedoch die Reihenfolge der Variablen beachten und hab keine Ahnung, wenn ich mir nur die Textdatei anscheue, an welcher Stelle welche Variable sitzt.

    Von PHP kenne ich das so:

    Inhalt von datei daten.inc:

    <?php
     var1=1;
     var2=2;
     var3="drei";
    ?>
    

    und dann im Programm:

    <?
     include("daten.inc");
     echo var1;
    ?>
    

    und schon hatte ich alle variablen im script.
    Was ich ja verstehe, ist, dass man c programme kompilieren muss (dass Speicherplatz bereitgestellt wird etc...).
    Aber wie sind dann z.B. Telefonbücher oder Programme die eine Konfigurationsdatei laden, geschrieben?
    Das muss doch auch gehen.

    Gibt es nicht so eine "automatische" Speicherverteilung für Strings oder so?

    lg ManuP



  • der include befehl von php ist dazu da, andere programmteile in den aktuellen stück code zu importieren. da php eine interpretersprache ist, kannst du diese ausgelagerten daten während der laufzeit ändern.

    das was du da mit der endung .inc oder .txt versiehst ist ein stück gültiger php code. also etwas, was du normalerweise mit der endung .php versehen würdest.

    c++ kann sowas nicht.

    du kannst aber problemlos daten aus irgendwelchen dateien, datenbanken etc. holen und in dynamische datenstrukturen wie beispielsweise dem std::vector speichern.

    wenn du php kennst, kennst du bestimmt auch sql server, die werden von php ja nativ unterstützt. wenn du irgendwelche daten von sql servern holst, musst du auch im vorfeld wissen, was du da rausholst und die entsprechend variablen etc. bereits vorhalten.
    vielleicht packst du die daten in ein array o.ä.

    und genau so funktioniert das auch in c++. natürlich sieht die variante der datenbeschaffung anders aus 😉



  • ok, dan klinke ich mich mal ein...

    warum funktioniert folgender code nicht??? ich komm nich druaf...

    #include <cstdlib>
    #include <iostream>
    #include <fstream>
    
    using namespace std;
    
    int main()
    {
    // Variablen Deklarieren
    
    char link[100]; 	
    char pfad[100]; 
    int fertig; 
    char korrekt; 
    
    ....
    viel cout
    ....
    
    	do 
    	  {	
    
    			 cout << "Gib zuerst deinen Pfad an!\n";
    			 cin >> pfad;
    
    			 cout << "und nun deinen Link!\n";
    			 cin >> link;
    			 cout << "ist die Eingabe richtig? (j oder n)\n";
    		 	 cin >> korrekt;
    		   if ((korrekt == 'j')||(korrekt == 'J'))
    
    			 //daten speichern
    
    			 ofstream datei(pfad);
    			 datei << pfad;
    
    			 		 fertig = 1;
    			 else 
    			 		 fertig = 0;
    
    		} while (fertig == 0);
    
        system("PAUSE");
        return EXIT_SUCCESS;
    }
    

    ich kapier das einfach nicht 🙄 😞



  • ich glaube, ich muss mich mal anmelden, is ja zum kotzen 😃 ...

    es geht in dem code speziell um die daten speichern....

    ohne die 2 speicherzeilen funktioniert der code....



  • ahh wie peinlich 😃

    ich habs hinbekommen... irgendwie hab ich die klammern vergessen + falsche variablennamen geschrieben... 🤡



  • soweit ich PHP kenne, ist das kein 'Lesen' einer Datei sondern ein schlichter 'include'.
    Das geht natürlich in C++ auch. Nur muss dann der Inhalt der Datei zur Compile-Zeit - also vor (!) der Erstellung des Programms - bekannt sein.
    PHP ist halt 'ne Script-Sprache und C++ eben nicht.

    Wenn Du auf dem 'Var1= ..' bestehst .. das ist im Prinzip das Format einer ini-Datei (zumindest unter Windows). Da hatte wir vor kurzen einen Thread zum Thema; ich find' ihn aber im Augenblick nicht wieder.
    Suche mal nach ini-Datei.

    Gruß
    Werner



  • @thordk

    Das mit dem std::vector hört sich interessant an. Werde in die Richtung mir mal Informationen einholen.

    @Werner

    Das mit PHP (das PHP interpretiert wird und mit dem include) ist mir klar, mir ging es eben nur darum, dass man sieht, dass man mit einem Texteditor die INCLUDE Datei ändern kann, und nicht am "eigentlichen" Programm rummschreiben muss und dann kompilieren.
    War wohl ein schlechtes Beispiel mit dem PHP.

    Die Ini-File trifft es eigentlich genau!
    Werde mich auch danach mal auf die Suche machen.

    lg ManuP



  • Das mit dem std::vector ist mir erstmal zu kompliziert. (Programmiere erst seit 2 Wochen cpp)

    Vielleicht sollte ich meine Frage umformulieren:

    Wie schreibe ich ein Objekt/ein Struct in eine Datei und lese es wieder ein?

    lg ManuP




Anmelden zum Antworten