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 DankMein 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 headerSchalte 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
