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ß).