Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
20.12.2001, 21:21
Son-Goten



HALLO!!!
ja, da ist er mal wieder... ER... so eine mischung aus klassischem noob (ihr wisst schon, die mit den vielen !!!!! - naja, die hab ich aber nie gemacht... *gg*) und ich-komme-mal-so-3-wochen-,-hab-dann-keinen-bock-mehr-und-hau-wieder-ab-um-dann-wieder-irgendwann-vorbeizuschauen....

und ER stellt wieder fragen, die akte-x-reif sind!!! also.... ich kann schon einiges (*schallendes gelächter im hintergrund*) mit c++.. hehe... sowas wie textadventures schreiben? ;)))) nee... jetz mal ernst.. also... ich möchte mein *riesiges* wissen mal wieder erweitern (ich weiß nicht, das kommt bei mir in so 2-monats-schüben... vielleicht sowas wie die regel.....halt nur alle 2 monate und ohne blut...) und hiezu einfach wissen, wie ich mit c++ auf die "außenwelt" zugreife, nicht im sinne von netzwerkprogrammierung sondern von simplen dateizugriffen... könnte mir hier jemand mit netten tutorials behilflich sein? öhh.. jaja.. google.... aber..... ihr kennt mich ja gar nicht!!! ich bin schrecklich faul!!!! aber wer faul sein wi9ll muss schlau sein!!!! aber wieso schreib ich dann ne halbe ewigkeit an diesem text rum, wenn ich in 2 sek. bei google fündig werden KÖNNTE? ganz einfach.. weil ich was verständliches und trotzdem komplettes suche, nicht irgendwelche möchte-gern-programmierer-seiten, auf denen man kaum material findet....... ich hoffe, es gibt hier leute, die mir nur mit ner url oder so helfen können (ich geh davon aus, dass viele sowas in ihren favourites haben) .. und bitte nicht anmaulen, weil ich zu faul bin zum suchen.. also... retro.. antworte besser nicht ;))))))))))))))))))))))))))))

mfg
und thnx im voraus (auch fürs anmaulen ;)) )
goten

--

zum Seitenanfang zum Seitenende Profil || Suche
001
21.12.2001, 01:52
Kriz



Fauler Säckel =)

C++ greift auf Dateien mit Hilfe von Streams zu. Diese Funktionen sind in folgenden drei Headerdateien gekapselt:

<fstream.h> = Schreiben + Lesen
<ifstream.h> = Nur Lesen
<ofstream.h> = Nur Schreiben

Eine Datei öffnet man so
Quellcode:#include <fstream.h>

int main()
{
....fstream file;
....file.open(DATEINAME, DATEIFLAGS, ZUGRIFFSFLAGS);
....if(file.good()) cout << "Hurra" << endl;
....else
....{
.........cout << "Fuck" <<  endl;
.........file.clear(); // Errorflags zurücksetzen
....}
....file.close();
....return 0;
}

DATEINAME is klar, oder?

Man kann absolute Pfadangaben machen (C:\\a\\b\\c.txt) oder nur den Dateinamen, dann wird im aktuellen Verzeichnis gesucht. \\ ist wichtig, da C++ aus \\ ein \ macht.

DATEIFLAGS fangen mit ios:: an und werden bei Bedarf geORt |:

ios::binary = Datei binär öffnen
ios::text = Datei im ASCII-Modus öffnen (default)
ios::nocreate = Nur öffnen, wenn Datei bereits existiert
ios::noreplace = Nur öffnen, wenn Datei noch nicht existiert
ios::in = Datei nur für Lesezugriff öffnen (nötig bei <fstream.h>, geht nicht bei <ofstream.h>)
ios::out = Datei nur für Schreibzugriff öffnen (nötig bei <fstream.h>, geht nicht bei <ifstream.h>)
ios::ate = Datei öffnen und an das Dateiende springen
ios::app = Datei öffnen und hinten anhängen
ios::trunc = Datei öffnen und leeren (d.h. auf 0 Bytes reduzieren)

Wird eine Datei nicht gefunden, so wird sie in der Regel automatisch erzeugt. Das kann man nur durch ios::nocreate verhindern!

ZUGRIFFSFLAGS fangen mit filebuf:: and, steuern den gemeinsamen Zugriff auf eine Datei und werden ebenfalls bei Bedarf geORt:

filebuf::sh_none = nach dem Öffnen haben andere keinen Zugriff auf die Datei
filebuf::sh_read = nach dem Öffnen können andere die Datei ebenfalls lesend öffnen
filebuf::sh_write = nach dem Öffnen können andere die Datei ebenfalls schreibend öffnen (gefährlich, wenn keine Synchronisation herrscht!)

Beispiel zum binären Öffnen einer Textdatei, wobei andere ebenfalls Schreiben und Lesen dürfen:
Quellcode:...
file.open("C:\\texte\\trallalla\\blablabla.txt", ios::in | ios::binary, filebuf::sh_write | filebuf::sh_read);
...

Sonstige Methoden:

good() = liefert TRUE falls alles in Ordnung (Streamstatus = 0)
eof() = liefert TRUE beim Erreichen des Dateiendes (Streamstatus = 1)
fail() = liefert TRUE, wenn letzte Operation nicht geklappt hat (Streamstatus = 2, bestehend aus bad()-Status | fail()-Status [= 2|4])
bad() = liefert TRUE, wenn's richtig gerummst hat im Getriebe, d.h. schwerer Fehler (Streamstatus = 4)
rdstate() = liefert den Streamstatus als int zurück (eof()-Status & fail()-Status & bad()-Status [= 1 & 2 & 4])
clear() = setzt gezielte Bits zurück oder alle.

Abschlußbeispiel zum Lesen und Ausgeben einer Textdatei:
Quellcode:...
file.open("test.txt", ios::in);
if(file.good())
{
....char c;
....while(file.get(c)) cout << c;
}
else file.clear();
file.close();
}

So, das dürfte wohl erstmal reichen. Die ganzen Stream-Methoden wie get, getline, read, write usw. kannst du dir ja mal per Google saugen (hrhrhrhr).

N8 und cu

--

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
002
21.12.2001, 09:26
Tron



Zitat:
Kriz postete
C++ greift auf Dateien mit Hilfe von Streams zu. Diese Funktionen sind in folgenden drei Headerdateien gekapselt:

<fstream.h> = Schreiben + Lesen
<ifstream.h> = Nur Lesen
<ofstream.h> = Nur Schreiben

kriz, ich behaupte jetzt einfach mal es gibt nur die headerdatei fstream.h, in der die deklarationen der drei klassen fstream, ifstream und ofstream drin sind.

--

'KEINE PANIK' - aus der Triologie in fuenf Baenden von Douglas Adams

'FÜR DEINN FERD' - aus 'Gevatter Tod' von Terry Pratchett

zum Seitenanfang zum Seitenende Profil || Suche
003
21.12.2001, 13:34
Kriz



Hä? Watt datt denn?

Es gibt nur fstream. Das mit ifstream unf ofstream habe ich in der nächtlichen Umgebung wohl als Header reingehauen... Tststs =)

Also:

<fstream.h> teilt sich auf in:

fstream (ifstream und ofstream)
ifstream
ofstream

Jetzt ist der Dreh raus =)

--

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
004
21.12.2001, 15:38
Tron



hihi, Kriz ist (geistig) umnachtet *g*

*in deckung geh*

--

'KEINE PANIK' - aus der Triologie in fuenf Baenden von Douglas Adams

'FÜR DEINN FERD' - aus 'Gevatter Tod' von Terry Pratchett

zum Seitenanfang zum Seitenende Profil || Suche