Unsolved Structure in eine Datei schreiben
-
Hallo, guten Morgen!
Ich versuche, eine Structure in eine Datei zu schreiben, als Datentransfer in ein anderes Programm.
Folgender Code:
typedef struct pumpe{ public: QString hersteller = ""; QString modell = ""; QString seriennummer = ""; QString kunde = ""; QString projekt = ""; }pumpe_t; bool MainWindow::pump2struct(){ pumpe_t exportdaten[1]; bool export_p = true; exportdaten[0].hersteller = ui->i_hersteller->text() + "\n"; exportdaten[0].modell = ui->i_typ->text() + "\n"; exportdaten[0].seriennummer = ui->i_serial->text() + "\n"; exportdaten[0].kunde = ui->i_kunde->text() + "\n"; exportdaten[0].projekt = ui->i_projekt->text() + "\n"; string fileName = QFileDialog::getSaveFileName(this, tr("Exportieren"), QDir::currentPath(), "Export (*.pppex)").toStdString(); ofstream output_file(fileName, ios::binary); output_file.write((char*)&exportdaten, sizeof(exportdaten)); output_file.close(); }
produziert in meiner Exportdatei ohne Fehlermeldungen bloss binären Müll (nach jeder Ausführung anderen).
Was mache ich falsch?
-
Du schreibst nur die QString-Object-Organisation in deine Datei. Diese Organisation besteht wie bei vielen Objekten, nicht nur bei Qt, aus diversen Pointern, Zählern und Flags, aber beinhaltet nicht die eigentlich Daten. Dies ist der eigentliche Unterschied zwischen festen Datentypen a la double, int, short und Objekten.
Für das Schreiben in eine Datei musst halt etwas mehr Aufwand betreiben und deine Ausgaberoutine zusammensetzen. Da wäre zum Einen der Ausgabeoperator und etwas weitere Informationen.
-
Ich habe das Ganze jetzt auf string statt QString umgebaut... klappt schon besser
-
@Thomas-63 Der korrekte Weg Datenstrukturen zu schreiben wäre http://doc.qt.io/qt-5/qdatastream.html.
Wozu public: in einem struct? In einem struct ist alles public.