vector->Textdatei



  • hallo
    ich habe folgende 2D_vector

    std::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 99

    und möchte das so in eine Text_Datei schreiben
    1.Datensatz

    31 3
    4 8
    3 4
    99 44
    77 56
    87 889

    2.Datensatz

    4 5
    88 69
    669 255
    669 63
    58 55
    55 99

    vielen 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 😉


Log in to reply