Schreiben in Datei
-
Wie muss der Aufruf fuer ausgeben() im main lauten, damit in die
Datei "datei.txt" geschrieben wird? ausgeben(zk,anz,?) ist noch klar aber was muss noch rein? Habe schon alles versucht.
Vielen Dank im Voraus !//Diese Zeile steht im main ofstream ausgabe("datei.txt"); void ausgeben(string *&zk, const int anz, ofstream ausgabe){ for(int i=0;i<anz;i++){ ausgabe<<zk[i]<<endl; ausgabe.close(); } }
-
a) warum Referenz auf einen String-Pointer? Warum nicht const-Referenz auf einen String?
b) streams können nicht kopiert werden, also auch nicht by-value übergeben werden. Übergib eine ostream-Referenz.Wenn du das beherzigst, sieht der Aufruf so aus:
ausgeben(zk, anz, ausgabe);
EDIT:
c) warum schließt du den Stream nach dem ersten Schleifendurchlauf**???** Weg damit. Die Funktion sollte den Stream IMHO überhaupt nicht schließen, aber wenn überhaupt, dann natürlich außerhalb der for-Schleife. Durch kreative Einrückung und Klammersetzung hast du den Fehler gut verschleiert ...
[ Dieser Beitrag wurde am 19.03.2003 um 16:47 Uhr von Bashar editiert. ]
-
Hi,
die ganze Geschichte funktioniert sowiso nicht, da der stream in der for Schleife sofort wieder geschlossen wird.
Sollte entweder am Ende der Fkt oder im Main passieren ...Edit:
...mist zu spät

[ Dieser Beitrag wurde am 19.03.2003 um 16:53 Uhr von Legolas editiert. ]
-
eine ausgeben-funktion sollte eine datei nie schließen.
-
Ernst schrieb:
eine ausgeben-funktion sollte eine datei nie schließen.
Warum eigentlich nicht? Hat doch seine Vorteile wenn man sie schließt?
-
Und was ist, wenn du sie dann z.b. in einer Schleife benutzen willst?
ofstream file("bla.txt"); for(int i = 0; i < 100; i++) ausgabe(i, file);
-
void vector_out(const std::vector<std::string>& strings, std::ofstream& stream) { for (std::size_t i = 0; i < strings.size(); ++i) stream << strings[i] << std::endl; }void array_out(const std::string*& array, const std::size_t size, std::ofstream& stream) { if (!stream) return; for (std::size_t i = 0; i < size; ++i) stream << array[i] << std::endl; }?
a) warum Referenz auf einen String-Pointer? Warum nicht const-Referenz auf einen String?
... hmm weil er nicht einen String übergeben will, sondern einen Array. Dafür sollte man allerdings am einfachsten einen std::vector nehmen
