vector->Textdatei
-
hallo
ich habe folgende 2D_vectorstd::vector<std::vector<double> > m2D_vec;
wie kann ich den Inhalt des vector in Textdatei speichern und zwar dass er nach je 2 Elementen eine Zeilenvorschub macht also
my 2D_vecotr enthält z.B.
31 3 4 8 3 4 99 44 77 56 87 889
4 5 88 69 669 255 669 63 58 55 55 99und möchte das so in eine Text_Datei schreiben
1.Datensatz31 3
4 8
3 4
99 44
77 56
87 8892.Datensatz
4 5
88 69
669 255
669 63
58 55
55 99vielen Dank
-
Morgen,
du schreibst ganz normal und immer wenn (i % 2) gegeben ist, schreibst du einen
Zeilenvorschub.(i ist eine Zaehlvariable z. B. for(size_t i = 0; ...))
mfg
v R
-
Danke
ich habe das so gemacht aber leider damit kann ich nicht 2 elementen in einer zeile Schreiben. habt ihr eine Idee?fstream datei("mydata_01.txt", std::ios::out); if(!datei) return 20; copy(m2D_vec[0].begin(),m2D_vec[0].end(),ostream_iterator<int>(datei,"\n")); fstream file("mydata_02.txt", std::ios::out); if(!file) return 20; copy(m2D_vec[1].begin(),m2D_vec[1].end(),ostream_iterator<int>(file,"\n"));
Danke
-
Wenn du nur zwei Koordinatenwerte (x,y) hast, dann definiere doch eine Struktur (anstatt den Overkill mit zwei Vektoren) und überlade den Stream-Ausgabe-Operator '<<',
struct Coord { double x, y; friend std::ostream& operator <<(std::ostream &os, const Coord& coord) { os << coord.x << ' ' << coord.y; } }; std::vector<Coord> m2D_vec; // im Ausgabefunktion copy(m2D_vec[1].begin(),m2D_vec[1].end(),ostream_iterator<Coord>(file,"\n")); // warum war bei dir hier <int> ???
-
Th schrieb:
copy(m2D_vec[1].begin(),m2D_vec[1].end(),ostream_iterator<Coord>(file,"\n")); // warum war bei dir hier <int> ???
wieso sollte da was andres als int stehen?
übrigens ist dein code falsch!so muss das sein:
copy(m2D_vec.begin(),m2D_vec.end(),ostream_iterator<Coord>(file,"\n"))
überleg kurz wieso, und dann weist du auch, wieso da int stehen musste