Textdatei



  • Guten Rutsch Leute

    Kann man diese Code's auf Textdatei umschreiben?

    //Hilfsfunktionen
    //fileRead liest Datei ein und alloziert dynamisch Speicher fuer alle Elemente und liest Sie ein
    int fileRead(char* strfile, const SWein* meineweine, int &anz){

    //Inputfilestream - Objekt, quasi Pointer auf die Dateien
    ifstream dat_ein;
    //Eingabedatei oeffnen
    dat_ein.open( strfile, ios::in);
    //Check ob's funktioniert hat
    if (!dat_ein){
    cerr << "Datei konnte nicht geoeffnet werden!\n";
    return 1;
    }
    //1. Anzahl Elemente in Datei zaehlen
    anz = dat_ein.gcount() / sizeof(struct SWein);
    //Strukturen einlesen
    for(int i = 0; i < anz; i++){
    dat_ein.read((char 😉 &meineweine[i],sizeof(struct SWein));
    }
    //File unbedingt schliessen nach Gebrauch
    dat_ein.close();
    return 0;
    }

    //fileSave speichert Daten eines Arrays in eine Datei, welche per Parameter uebergeben werden
    int fileSave(char* strfile, SWein* meineweine, int anz){
    //Outputfilestream - Objekt, quasi Pointer auf die Dateien
    ofstream dat_aus;

    // Ausgabedatei oeffnen
    dat_aus.open(strfile, ios::out);

    //Check ob's funktioniert hat
    if (!dat_aus){
    cerr << "Datei konnte nicht geoeffnet werden!\n";
    return 1;
    }

    // Array mit Strukturen binaer in Datei schreiben
    dat_aus.write((char *)meineweine, sizeof(struct SWein)*anz);
    //File unbedingt schliessen nach Gebrauch
    dat_aus.close();
    return 0;
    }

    Gutes neues Jahr
    🤡 🤡 🤡



  • Bitte benutze die cpp Tags des Forums:

    //Hilfsfunktionen
    //fileRead liest Datei ein und alloziert dynamisch Speicher fuer alle Elemente und liest Sie ein
    int fileRead(char* strfile, const SWein* meineweine, int &anz){
    
    //Inputfilestream - Objekt, quasi Pointer auf die Dateien
    ifstream dat_ein;
    //Eingabedatei oeffnen
    dat_ein.open( strfile, ios::in);
    //Check ob's funktioniert hat
    if (!dat_ein){
    cerr << "Datei konnte nicht geoeffnet werden!\n";
    return 1;
    }
    //1. Anzahl Elemente in Datei zaehlen
    anz = dat_ein.gcount() / sizeof(struct SWein);
    //Strukturen einlesen
    for(int i = 0; i < anz; i++){
    dat_ein.read((char *) &meineweine[i],sizeof(struct SWein));
    }
    //File unbedingt schliessen nach Gebrauch
    dat_ein.close();
    return 0;
    }
    
    //fileSave speichert Daten eines Arrays in eine Datei, welche per Parameter uebergeben werden
    int fileSave(char* strfile, SWein* meineweine, int anz){
    //Outputfilestream - Objekt, quasi Pointer auf die Dateien
    ofstream dat_aus;
    
    // Ausgabedatei oeffnen
    dat_aus.open(strfile, ios::out);
    
    //Check ob's funktioniert hat
    if (!dat_aus){
    cerr << "Datei konnte nicht geoeffnet werden!\n";
    return 1;
    }
    
    // Array mit Strukturen binaer in Datei schreiben
    dat_aus.write((char *)meineweine, sizeof(struct SWein)*anz);
    //File unbedingt schliessen nach Gebrauch
    dat_aus.close();
    return 0;
    }
    

    mfg.



  • tinile schrieb:

    Kann man diese Code's auf Textdatei umschreiben?

    Ja; einfach der struct SWein Streaming-operatoren verpassen und einfach lesen und schreiben:

    #include <iostream>
    #include <fstream>
    #include <vector>
    #include <algorithm>    // copy
    #include <iterator>     // i/ostream_iterator; back_inserter
    
    struct SWein
    {
        friend std::istream& operator>>( std::istream& in, SWein& w )
        {
            return in >> w.m_einMember >> w.m_nochEiner;
        }
        friend std::ostream& operator<<( std::ostream& out, const SWein& w )
        {
            return out << w.m_einMember << " " << w.m_nochEiner;
        }
    
        int m_einMember;
        double m_nochEiner;
    };
    
    int main()
    {
        using namespace std;
        vector< SWein > meineweine;
        copy( istream_iterator< SWein >( ifstream( "Weine.txt" ) ), istream_iterator< SWein >(),
            back_inserter( meineweine ) ); // lesen
        copy( meineweine.begin(), meineweine.end(), 
            ostream_iterator< SWein >( ofstream( "Weine.txt" ), "\n" ) ); // schreiben
    }
    

    Warum so kompliziert, wenn's auch einfach geht 😉

    Gruß
    Werner



  • Happy Newyear
    und vielen Dank

    Mein Boreland 5.02 gibt mir folgende Fehlermedungen.
    Muss diesen auch verwenden.(kurs)

    Info :Compiling E:\Textdatei.cpp
    Warn : VECTOR.h(985,2):Cannot create pre-compiled header: code in header
    Fehler: Textdatei.cpp(18,24):'istream' is not a member of 'std'
    Fehler: Textdatei.cpp(18,25):Declaration terminated incorrectly
    Fehler: Textdatei.cpp(35,36):Too few arguments in template class name 'istream_iterator'
    Fehler: Textdatei.cpp(35,46):Function call missing )
    Fehler: iterator.h(738,44):Illegal structure operation
    Fehler: Textdatei.cpp(38,60):Could not find a match for 'std::ostream_iterator<SWein>::ostream_iterator(ofstream,char *)'

    Die Befehle istream und ostream sind mir auch nicht bekannt.
    In meinen Kursunterlagen steht darüber nichts drin.(Anfänger)

    Gruss
    🤡 🤡 🤡



  • tinile schrieb:

    Mein Boreland 5.02 gibt mir folgende Fehlermedungen.
    Muss diesen auch verwenden.(kurs)

    Info :Compiling E:\Textdatei.cpp
    Warn : VECTOR.h(985,2):Cannot create pre-compiled header: code in header

    Schalte bei den Projekt-Einstellung die Option 'pre-compiled-header' aus. Das macht eh' bloß Ärger.

    tinile schrieb:

    Fehler: Textdatei.cpp(18,24):'istream' is not a member of 'std'

    Dann hat der 'Boreland 5.02' einen Stand von vor 10 Jahren oder älter. Ich nehme an. Du benutzt auch statt #include <iostream> die alte Version #include <iostream.h>. Lasse überall das 'std::' einfach weg.

    tinile schrieb:

    Fehler: Textdatei.cpp(18,25):Declaration terminated incorrectly
    Fehler: Textdatei.cpp(35,36):Too few arguments in template class name 'istream_iterator'

    Schau bitte in Deiner Hilfe oder dem Header <iterator[.h]> nach, welche Template-Paramter Deine Version von istream_iterator benötigt. Wahrscheinlich istream_iterator< SWein, char > oder so.

    tinile schrieb:

    Die Befehle istream und ostream sind mir auch nicht bekannt.
    In meinen Kursunterlagen steht darüber nichts drin.(Anfänger)

    Äh - bist Du sicher, dass es sich um C-PLUS-PLUS-Kurs-unterlagen handelt ? 🙄

    Gruß
    Werner



  • Hallo Werner

    Hab mir das Kursskript noch mal genau unter die Lupe genommen.
    Es wurde 2003 das letzte mal aktualisiert.Der Boreland Compiler war auf einer CD mit den Kursunterlagen dabei.Wird auch im Kurs so verwendet.Mein Skript geht bis Kapitel 12 Dynamische Daten New und delete.

    Werde heute Abend es noch mal versuchen.
    Hab heute Nachmittag leider viel Verwandtenbesuch.Heul,heul

    😮 😮


Anmelden zum Antworten