Struktur mit sizeof aus Textdatei lesen



  • Beisp:
    struct Mensch{
    char name[50];
    int alter;
    };

    In der Textdatei stehen die Werte (z.B. Hans57 usw.) hintereinander (optional auch pro Zeile einer).

    Nun das Problem:
    Ich versuche den Lesezeiger strukturweise (56 Byte) weiterzusetzen. Weil die Werte aber ohne Abstände in die Textdatei geschrieben werden, funktioniert das nicht.

    Hat jemand eine elegante Lösung oder muss ich mit einem Trennzeichen operieren ?



  • int main()
    {
    
        Mensch a;
    
        ifstream lese("datei", ios::in | ios::binary);
    
        if(!lese)
        {
            cout <<"Datei kann nicht geöffnet werden !!!";
            return 1;
        }
    
        lese.read((char*) &a, sizeof(struct Mensch));
    
        lese.close();
    
    return 0;
    }
    


  • Ja, vielen Dank Freak_Coder.

    Es soll aber eine Textdatei (Klartext) sein. Also nicht binär.



  • Momentmal! Mein Code würde bei deinem Problem wahrscheinlich nicht helfen. Es sei den du würdest die stuktur auch so in die Datei schreibe:

    Mensch a;
    
        strcpy(a.name,"Hans");
        a.alter=57;
    
        ofstream out("ha.txt", ios::in | ios::binary);
        if(!out)
        {
         cout <<"Error !!!";
         return 1;        
        }
    
        out.write((char *) &a, sizeof(struct Mensch));
    
        out.close();
    


  • Ist zwar immer noch kein Klartext, im Prinzip aber in Ordnung.

    Ich werde mal mit strcpy experimentieren. Das Problem ist, dass die int-Variable binär eine feste Größe hat, im "Text-Format" aber jede Stelle als ein Zeichen gewertet wird. Und dann gibt es noch das Problem mit den Leerzeichen im char-Array.


Anmelden zum Antworten