Binäre files



  • Beispiel: binary write of double vector

    vector<double> d;
    ofstream outfile("Signal.bin");
    for(int i=0;i<d.size();++i)
    outfile.write((char *) &d[i], sizeof(double));
    

    Gibt es eine schönere Methode ohne FOR-SChleife und ohne das hässliche (char*)?

    Wie lese ich eine binäre Datei in einem vector<double>?

    Ich würde gerne so etwas schreiben auch für binäre Dateien:
    copy(istream_iterator<double>(infile),istream_iterator<double>(),back_inserter(d));

    Danke Carmen



  • Ein Vektor speichert seine Elemente direkt hintereinander im RAM, also kannst du sie auch komplett übergeben:

    outfile.write(&d[0],sizeof(double)*d.size());
    

    (und für die binäre Ein/Ausgabe mußt du dir wohl eigene Iteratoren schreiben, die normalen Stream-Iteratoren verwenden operator>> und <<)



  • Danke CStoll! Eine sehr gute Idee!
    Aber es funktioniert nur so:

    outfile.write((char *)&d[0], sizeof(double)*d.size());
    

    Wie schreibt man eigene Iteratoren??
    Wo finde ich Infos & Beispiele darüber?

    SCUZI!
    Ich bin Physikerin und komme von MatLab Programmierung in C++ neue Welt...
    Als Referenz habe ich mir die 3 Bücher von Jossutis bestellt...im "The C++ Standard Library" page 288 habe ich ein Chapter gefunden 'User-Defined Iterators', but ich brauche mehrere Beispiele...
    Danke ! Carmen



  • carmen schrieb:

    Wie schreibt man eigene Iteratoren??
    Wo finde ich Infos & Beispiele darüber?

    Du definierst dir eine eigene Klasse und verpasst ihr alle notwendigen Operatoren (kannst ja die Stream-Iteratoren der STL als Vorlage verwenden, wie das aussehen muß).


Anmelden zum Antworten