Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
10.10.2001, 19:41
]predator[



#include <fstream>
#include <iostream>
using namespace std;

void main()
{
ifstream in("witz.txt");
while(!in.eof())
{
char ch;
ch=in.get();
cout<<ch;
};
};

----

mit diesem source kann man dateien einlesen lassen, doch ich frage mich, wie man variabeln, bzw. den inhalt von variabeln einlesen lassen kann... weiß einer die antwort???

--


Dieser Beitrag wurde am 10.10.2001 um 19:50 von ]predator[ bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
001
10.10.2001, 20:01
]predator[



moment mal! ich hab mir den source gerade reingezogen und mir viel auf das der inhalt con witz.txt in der variabel ch bereits enthalten ist =)))))

--

zum Seitenanfang zum Seitenende Profil || Suche
002
10.10.2001, 20:13
Kriz



Du hast noch nicht soviel Ahnung, eh? Wenn doch, dann müßtest du ja wissen, daß auch im Programm aktive Variablen durch geeigneten Code ihren Inhalt mehr oder weniger lesbar in einer Datei ablegen. Der Text "Hallo Welt" in einer Datei kann sowohl Text als solcher sein, den du mit dem Code oben auslesen kannst, es kann aber auch der Inhalt eines Strings gewesen sein...

Also, zunächst unterscheidet man da erstmal zwischen ASCII- und Binärspeicherung. Die ASCII-Speicherung ist der Default für das Filestreaming. Das bedeutet also nichts anderes, als das Lesen und Schreiben aller Variableninhalte in einer lesbaren ASCII-Konvertierung enden:
Quellcode:#include <fstream.h>

void main()
{
    char* s = "Hallo Welt\n";
    int i = 12345;
    fstream f;
    f.open("test.txt", ios::out | ios::trunc);
    f << s;    // String in Datei schreiben
    f << i;    // Integer in Datei schreiben
    f.close();
}

Der Inhalt der Datei lautet dann lesbar als ASCII-Format:

Hallo Welt
12345

Und genauso kann man ihn dann wieder einlesen:
Quellcode:#include <fstream.h>
#include <string.h>

void main()
{
    char sbuf[500];
    int i;
    fstream f;
    f.open("test.txt", ios::in);
    f >> sbuf;    // String aus Datei lesen
    f >> i;    // Integer aus Datei lesen
    f.close();
}

Jetzt hast du in sbuf "Hallo Welt\n" stehen und in i 12345. Das dumme ist nur, daß die Reihenfolge der abgespeicherten Variablen wieder eingehalten werden muß. Außerdem lassen sich so schlecht sequenzielle Datenstrukturen speichern wie struct oder union oder classes. Dafür nimmt man die beiden Methoden read() oder write(). Sie schreiben binär, weshalb man den Inhalt von test.txt dann nicht mehr lesen kann im Editor. Natürlich kannst du auch die beiden abgeleiteteten Klassen ifstream für Eingabe und ofstream für Ausgabe verwenden =)

Unformatiertes Lesen:
Quellcode:ifstream::read((char*)&Zeiger_auf_zu_lesende_Variable, sizeof(Variable));

Unformatiertes Schreiben:
Quellcode:ofstream::write((char*)&Zeiger_auf_zu_schreibende_Variable, sizeof(Variable));

*** Datei muß immer im binären Modus geöffnet werden (ios::binary) ***

--

K:R-I)Z++
"CSS ist cascading style sheets. Und nicht so'n Ranzspiel." - dp
In memory of Voice († 2005/03/30)

zum Seitenanfang zum Seitenende Profil || Suche
003
10.10.2001, 22:39
]predator[



thx!

--

zum Seitenanfang zum Seitenende Profil || Suche