Ich versuche gerade, einen Vektor von Strukturen in eine Binärdatei zu schreiben und zu schreiben, so dass ich nicht damit verbringe, sie vorzufüllen, indem ich sie ständig auffülle.Wie liest und schreibt man einen Vektor von struct in eine Datei?
Ich habe anscheinend ein paar Probleme damit ... Ich dachte, ich könnte std::ofstream
, aber das scheint nicht der Fall zu sein.
#include <iostream>
#include <cstdlib>
#include <vector>
#include <fstream>
struct element
{
std::vector<std::pair<int, int>> coord;
element(std::vector<std::pair<int, int>> set_coord)
{
coord = set_coord;
}
};
int main()
{
std::cout << "Hello, Wandbox!" << std::endl;
std::vector<element> matrix;
std::ofstream datafile;
datafile.open("path/to/file");
datafile<<matrix;
datafile.close();
}
https://wandbox.org/permlink/urCHoETdh7vE3xlE
Ich erhalte eine Fehlermeldung, dass die operator<<
hier nicht gültig ist ... aber warum?
Bei einem Push, würde ich sagen, es ist, weil Sie es nicht implementiert haben. was Sie nachschlagen möchten, ist Operator überladen – UKMonkey
Weil es nicht gültig ist. Die eigentliche Nachricht, keine Umschreibung, ist 'prog.cc:25:13: Fehler: keine Übereinstimmung für 'Operator <<' (Operandentypen sind 'std :: ofstream' {aka 'std :: basic_ofstream'} und ' std :: vector ') ', und das ist vollkommen richtig und klar; Für diese Operandentypen ist kein Operator definiert. Ich meine, du dachtest, du könntest einfach alles einem "Ofstream" zuführen, und es würde irgendwie von Natur aus wissen, wie man es für die Ausgabe formatiert und in welcher spezifischen Art und Weise du willst? –
Ich habe eine kleine Änderung gemacht, von zwei Ints zu einem Vektor von Paaren ... Es ist nicht möglich, es zu speichern, ohne eine Routine zu definieren, die die Datenstruktur zu ihrem Kern (ints) seziert und Ints einzeln speichert? – lamda