Vector abspeichern
-
Hi,
ich hab vor ca. 1 Jahr hier mal gefragt wie man nen vector abspeichert (nein nicht den Thread aus dem FAQ, der ist nicht das was ich brauche). Da die suche fort ist muss ich nochmal fragen:
Das Testprogramm sah ca. so aus, doch es funzt net *schnief*
#include <iostream> #include <fstream> #include <vector> using namespace std; int main (void) { vector<int> test; test.push_back (1); test.push_back (2); test.push_back (3); test.push_back (4); test.push_back (5); ofstream file ("test.txt"); file.write ((const char*)&test[0], test.size()/test[0]); ifstream filei ("test.txt"); vector<int> x; x.reserve (5); filei.read ((char*)&x[0], test.size()/test[0]); // bischen Fuckeln *g* cout << x[0] << endl; cout << x[1] << endl; cout << x[2] << endl; cout << x[3] << endl; cout << x[4] << endl; int y; cin >> y; return 0; }
Wo liegt der fehler, sagt jetzt net: "Bäh nen Vector abspeichern geht net" ES GEHT, würde die Suche funzen könnte ich es belegen
Ich glaub Volkard hat mir damals dabei geholfen... find jedoch den Thread ohne suche net mehr *heul*
-
Suche schrieb:
Wo liegt der fehler, sagt jetzt net: "Bäh nen Vector abspeichern geht net" ES GEHT, würde die Suche funzen könnte ich es belegen
Ich glaub Volkard hat mir damals dabei geholfen... find jedoch den Thread ohne suche net mehr *heul*
Nicht alles was geht, ist auch sinnvoll...
Devil
-
Es geht nicht um den Sinn, denn der code war nur ein test. Es geht ums lernen. Wenn ich z.B. ne Struktur in den Vector pumpe sieht die welt schon wieder anders aus.
-
Suche schrieb:
test.size()/test[0]
Was, glaubst du, kommt dabei heraus, wenn du die Anzahl der Elemente des Vectors durch den Wert des ersten Elements teilst?
-
file.write ((const char*)&test[0], test.size()/test[0]);
Nicht test.size()/test[0] sondern test.size() * sizeof(int).
Du willst ja schließend beginnend von &test[0] alle Bytes die zum Vektor gehören in die Datei schreiben. Ein Vektor hat size()-Elemente. Jedes Element ist sizeof(Element)-Bytes groß, also umfasst dein Vektor size() * sizeof(Element)-Bytes nutzbare Daten.PS: Du solltest die Datei mit dem binary-Flag öffnen.
-
@HumeSikkins:
Ich habs so gemacht wie du sagtest:int main (void) { vector<int> test; test.push_back (1); test.push_back (2); test.push_back (3); test.push_back (4); test.push_back (5); ofstream file ("test.txt", ios::binary); file.write ((const char*)&test[0], (int)test.size()*sizeof(int)); ifstream filei ("test.txt", ios::binary); vector<int> x(test.size()); filei.read ((char*)&x[0], (int)test.size()*sizeof(int)); cout << x[0] << endl; cout << x[1] << endl; cout << x[2] << endl; int y; cin >> y; return 0; }
Will nicht, als ergebnis bekomm ich nur Nullen.
-
Vielleicht wurde die Datei noch gar nicht geschrieben? Schließ die Datei doch erstmal.
-
genau daran liegt es (getestet)