Speichern Lesen



  • Hallo ich hätte mal ein paar Fragen, aber keine Angst die kommen alle erst nach und nach:).

    Ich hab hier mal nur den main teil meines Programmes. Ich würde gerne den Teil mit Speichern und Einlesen in eine separate Headerdatei schreiben um den mainteil so klein und übersichtlich wie möglich zu halten. Ich hab nur keine ahnung wie ich das in eine eigene headerdatei zusammenfassen müsste. Könnt ihr mir da helfen.

    #include <iostream>
    #include <stdlib.h>
    #include <iomanip>
    #include <fstream>
    #include "basis.h"
    #include "fluessig.h"
    
    using namespace std;
    
    int main(int argc, char *argv[])
    {
        int i;
        char datei1[]="Lager.txt";  
        char zeile[250];  
        ofstream ausgabe;
        ausgabe.open(datei1, ios_base::app);
        if (ausgabe.good())
            cout << "Datei " << datei1
                 << " konnte geoeffnet werden."
                 << endl;
        ausgabe << "test";
        ausgabe.close();
        fluessig artikel(120, 120,121,1);  
        cout.width(65);
        cout << " L A G E R V E R W A L T U N G S P R O G R A M M" << endl;
        for (i=1; i<3; i++) {
            for (i=1; i<=80; i++) 
            cout << "_";
        }
        cout << endl;  
        artikel.getalldaten();
        ifstream eingabe(datei1, ios::in);
        if (eingabe.good()) 
        while (!eingabe.eof()) {
             eingabe.getline(zeile, 250);
             for (int j=0; j<6; j++) {
             cout << endl;
             }
        cout << "Datei Memo einlesen " << endl << endl << endl;
        cout << zeile << endl;
        }
        fflush(stdin);
        getchar();	
        return 0;
    }
    


  • Sind es eigenständige Funktionen, die irgendeinen Text in eine Datei schreiben oder eher Funktionen, die speziell für eine Klasse gedacht sind damit diese bestimmte Sachen lesen/schreiben kann.

    In letzterem Fall:

    // read
    bool DEINE_KLASSE::read(const string& fname)
    {
           ifstream in(fname.c_str());
           if(in)
           {
                 // Lese irgendwelche (wahrscheinlich private) Daten aus Datei...
                 return true;
           }
           return false;
    }
    
    // write
    bool DEINE_KLASSE::write(const string& fname)
    {
           ofstream out(fname.c_str(), ios::app);
           if(out)
           {
                  // Daten schreiben...
                  return true;
           }
           return false;
    }
    

    Bei Nicht-Methoden eventuell noch den zu lesenden/schreibenden Text als zweites Argument übergeben.

    Oder insgesammt direkt auf die Standard-Methoden read/write der Klassen ifstream/ofstream zurückgreifen. KA was in deinem Fall das beste ist.

    Caipi



  • Es geht mir darum das eine Funktion...hier getalldaten alle Daten eines artikels auf dem bildschirm ausgibt. Diese Daten möchte ich jetzt aber in der Textfile auch speichern können.

    und zwar über eine funktion die aufrufe.

    also z.b.

    void speichere () {
    ausgabe <<liter;
    ausgabe <<preis;
    }
    

    im Programm so dachte ich mir muss ich dann nur noch die Funktion so aufrufen

    speichere.artikel ();

    und er speichert das alles dann ab.

    Würde das so gehen?



  • Schüler schrieb:

    Es geht mir darum das eine Funktion...hier getalldaten alle Daten eines artikels auf dem bildschirm ausgibt. Diese Daten möchte ich jetzt aber in der Textfile auch speichern können.

    und zwar über eine funktion die aufrufe.

    also z.b.

    void speichere () {
    ausgabe <<liter;
    ausgabe <<preis;
    }
    

    im Programm so dachte ich mir muss ich dann nur noch die Funktion so aufrufen

    speichere.artikel ();

    und er speichert das alles dann ab.

    Würde das so gehen?

    Prinzipiell schon, kannst es ja auch mal auprobieren. Prinzipiell heißt, wenn speichere() eine Methode ist, ausgabe ein ofstream und liter & preis Element-Variablen sind... etc...

    Und nochwas: wenn deine Funktion (bzw. Methode) speichere() heißt und artikel ein Objekt der Klasse welche diese Methode beinhaltet, dann rufst du diese über art artikel.speichere() auf 😉

    Caipi


Anmelden zum Antworten