Schreiben in Datei geht nicht DRINGEND!!!!
-
nach den close muss noch ein clear() damit die flags wie eof, bad und co resetet werden
ein versäumnis der stl das open() das nicht gleich mit macht
-
das clear() bringt auch nichts.
-
was mache ich hier falsch? meine klasse sieht so aus (auszugsweise):
template<class T> class Graph { private: Vertex<T>* rootVertex; string fileName; fstream dataFile; public: Graph(string fileNameValue, Vertex<T>* rootVertexValue = NULL) { fileName = fileNameValue; rootVertex = rootVertexValue; } void setRootVertex(Vertex<T>* value) { rootVertex = value; } void insVertex(Vertex<T>* vertex) { } void insEdge(string vertexNameFrom, string vertexNameTo, string edgeWeight) { } void read() { dataFile.open(fileName.c_str(), ios_base::in); } void write() { Vertex<T>* tempVertex; tempVertex = (Vertex<T>*)rootVertex; dataFile.open(fileName.c_str(), ios_base::out | ios_base::in | ios_base::trunc); dataFile.clear(); while (tempVertex != NULL) { dataFile << tempVertex->getElement() << "\n"; cout << tempVertex->getElement(); tempVertex = (Vertex<T>*)tempVertex->getPointerOne(); } dataFile.close(); } };
Wieso ist die Datei nach write() zwar angelegt aber leer? (bei tempVertex->getElement() kommt was raus, hab ich getestet)
-
Rufst Du zuvor read auf ? Da steht kein close()
-
read() wird nicht aufgerufen. das open() steht da momentan nur so, die methode ist noch nicht fertig.
-
dataFile.open(fileName.c_str(), ios_base::out | ios_base::in | ios_base::trunc); dataFile.clear();
zu
dataFile.clear(); dataFile.open(fileName.c_str(), ios_base::out | ios_base::in | ios_base::trunc);
try it pls
-
bringt leider auch nichts
-
versuch mal:
dataFile << tempVertex->getElement(); datafile.flush();
flush() schiebt gepufferte Bytes noch nach.
-
hilft leider auch nicht. was mich halt wundert ist dass, wenn ich einen stream lokal in der funktion deklariere, es funktioniert.
-
Funktioniert der Codeschnipsel ?
#include <iostream> #include <algorithm> #include <iterator> #include <fstream> using namespace std; int main(int argc, char* argv[]) { fstream datei("c:\\test.txt",ios::in|ios::out); cout<<datei.rdbuf(); datei.close(); datei.clear(); datei.open("t:\\test.txt",ios::in|ios::out); if(!datei) cout<<"Funzt nicht\n"; return 0; }
(Ich hatte das Problem auch mal , un nu rätsel ich wieder rum. Die Lösung liegt zu weit weg (zuhause) O
*mal nach hume ruf* )
-
bin mir jetzt nicht sicher, ob's funktioniert. Ich kriege zumindest keine Ausgabe.
-
Na is doch super
Dann prüf mal ob die Datei existiert die geöffnet werden soll, ob der Stream vllt. schon offen war...
dataFile.clear(); dataFile.open(fileName.c_str(), ios_base::out | ios_base::in | ios_base::trunc); if(!dateiFile) cout<<"Geht nicht auf, kannst nix reinschreiben\n";
-
der text wird nicht ausgegeben, scheint soweit ok zu sein. die datei wird ja auch erzeugt, bleibt aber leer. ich muss jetzt 1-2h studen weg. wäre super wenn du heute abend deine lösung die zu hause ist kurz posten könntest. mein abgabe- termin war eigentlich schon heute. danke!
-
kann mir da keiner helfen?
-
marcoow schrieb:
der text wird nicht ausgegeben, scheint soweit ok zu sein. die datei wird ja auch erzeugt, bleibt aber leer. ich muss jetzt 1-2h studen weg. wäre super wenn du heute abend deine lösung die zu hause ist kurz posten könntest. mein abgabe- termin war eigentlich schon heute. danke!
Und so?
ofstream datei("c:\\test.txt",ios_base::out);
Ansonsten probier es mal indem du deine ausgabe hinten an die datei hängst ob dann was drin steht, mit ios_base::app.
Code-Hacker
-
bringt auch beides nichts. datei ist zwar angelegt, aber leer.