Frage zu fstreams
-
Ich arbeite mich gerade mal durch die fstreams um mal zu sehen wie sie im vergleich zum C Gegenstück sind das ich bisher benutze. Dabei habe ich gesehen das es von seek und tell jeweils eine g Version aus istream und eine p version aus ostream gibt. Jetzt würde mich mal interessieren wie sich das verhält wenn man fstream benutzt, wenn ich ne datei mit ios::in|ios::out öffne um gleichzeitig zu lesen udn zus chreiben welche der Funktionen müsste ich dann benutzen? Sind beide gleich oder habe ich dann 2 Zeiger einen zum Lesen und einen zum Schreiben?
EDIT:
Die obige Frage interessiert mich nachwievor, beide Zeigen zwar auf den selben Punkt aber sind sie rein technisch dennoch getrennt?
Eine weitere Frage die mich noch interessiert, mit File kann man eine Datei ja zum lesen und schreiben öffnen, wenn sie nicht Existiert wird automatisch eine leere Datei erstellt. Mich würde dazu interessieren ob ich die fstreams auch dazu bringen kann?
-
Also wenn du ein
ofstreamObjekt erzeugst und der Pfad nicht gefunden werden kann, wird das File neu angelegt..Und die erste Frage sollte dir das hier beantworten:
http://www.cplusplus.com/reference/iostream/fstream/
Die anderen Versionen
ifstreamundofstreamsollten klar sein, was der Unterschied ist..
-
Jo die anderen 2 sind auch klar nur fstream bereitet mir einiges an Kopfzerbrechen weil da ja alles zusammengeführt wird.
Das mir die Datei automatisch bei nem ofobjekt erstellt wird weis ich. Mein problem ist sobald ich in und out habe tut es das nicht. Wenn ich zB über c gehe und dort eine Kombination aus lesen und Schreiben nehme (zB "a") dann bekomme ich eine leere Datei wenn sie nicht da ist, fstream weigert sich da irgendwie sobald ich außer out auchnoch in haben will.
-
@Xebov,
"a" ist keine Kombination aus lesen und schreiben, sondern ein dazufügendes Schreiben. Das wäre bei den Streamsstd::ios_base::app. Übrigens, mal wieder ein Vorteil bei den Streams, man hat sprechende Namen
Alle Öffnungsmöglichkeiten von C sind auch in C++ möglich:
r -> std::ios_base::in w -> std::ios_base::out a -> std::ios_base::app r+ -> std::ios_base::in | std::ios_base::out w+ -> std::ios_base::in | std::ios_base::out | std::ios_base::trunc a+ -> std::ios_base::in | std::ios_base::app b -> std::ios_base::binaryWo ist das Problem?

Bei "r+" steht übrigens auch in der C Dokumentation das folgende:Open a file for update both reading and writing. The file must exist.
Grüssli
-
Dravere schrieb:
Wo ist das Problem?

Hat sich eben aufgelöst, danke für die Übersicht, hab da irgendwie was durcheinandergebracht nun macht er genau das was ich von ihm will, mal noch in ruhe mit dem schreiben herumprobieren.