ofstream



  • #include "vererb.h"
    #include <fstream.h>
    
    void main()
    {
    	ver_dat frank("30.12.2222"); // vererbte Klasse von String und Datum
    	ver_dat test;
    
    	ofstream ausgabe("schuster.bin", ios::out | ios::binary);//class -> datei
    	ausgabe.write((char*)(&frank), sizeof(frank));
    	ausgabe.close();
    
    	ifstream eingabe("frank.bin", ios::in | ios::binary);//datei -> class
    	eingabe.read((char*)(&test),sizeof(test));
    	eingabe.close();
    
    	exit(0);
    }
    

    meine frage: das auslesen funktioniert korrekt!
    beim einlesen liest er den tag monat jahr korrekt in die klasse ein, aber der String wird nicht erzeugt aber die Länge des Strings schon, etwas verwirrende Frage aber:
    eingabe.read((char*)(&test),sizeof(test));
    was wird in der zeile aufgerufen von der Klasse test?
    Konstruktor?
    oder was sonst?

    Über eine Antwort würde ich mich freuen danke

    /edit: Bitte Code-Tags verwenden



  • Ein String ist ein dynamisches Objekt ohne feste Länge.
    Woher soll *fstream wissen wie lang der string ist ?

    Devil



  • die Länge wird aus den Zahlen errechnet, die Zahlen sollen dann in einen String umgewandelt werden

    meine Frage ist halt welchen Konstruktor von Test er aufruft, standard, char *?



  • Frank2003 schrieb:

    #include "vererb.h"
    eingabe.read((char*)(&test),sizeof(test));

    Was passiert genau in dieser Zeile, was wird 100% genau hier geschehen, werden Konstruktoren, Elementfuktionen aufgerufen?



  • Frank2003 schrieb:

    Was passiert genau in dieser Zeile, was wird 100% genau hier geschehen, werden Konstruktoren, Elementfuktionen aufgerufen?

    Da geschieht garnix. Es werden brutal sizeof(test) Bytes beginnend an der Adresse &test in den Speicher geschrieben. Was natuerlich zu undefinierten Verhalten fuehrt, wenn ver_dat kein primitiver Datentyp ist.



  • Und wie könnte ich hinter dem benutzten Speicher (reservertierter Speicher ist ja net voll, ist ja noch platz für einen String) nutzen, müsste ich hinter dem einlesen nen Konstruktor/Funktion aufrufen?



  • quatsch was ich schrieb mein text müsste ja mit eingelesen

    weil schließlich will ja das einlesen was ausgegeben wurde


Anmelden zum Antworten