Announcement

Collapse
No announcement yet.

Problem mit fstream

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Problem mit fstream

    Ich habe folgendes Problem ich möchte eine Struktur speichern, ist an sich recht einfach, aber wenn ich dann den passenden code kompiliere kommt immer diese
    Fehler meldung:

    ausgabe.cpp(36) : error C2679: Binärer Operator '<<': Es konnte kein Operator gefunden werden, der einen rechtsseitigen Operanden vom Typ 'Tech::Test' akzeptiert (oder keine geeignete Konvertierung möglich).
    ....
    .....
    ......

    Leider kann ich damit nichts anfangen und hier mal der Code den ich benutze:

    Code:
    void Software::Datei(char* Dateiname, Test Arbeiter )
    	{
    		fstream Datei;
    
    		Datei.open(Dateiname, ios::out|ios::app);
    
    		Datei<<Arbeiter;
    
    		Datei.close();
    	}
    bin ich vielleicht die Sache falsch angegangen?

    Ich hoffe ihr könnt mir weiter helfen.

  • #2
    fstream weiss nicht, wie man Arbeiter (Test) speichert. fstream ist nicht gleichbedeutend mit einem Objectstream aus Java.

    Du musst den Arbeiter also "einzeln" speichern. D.H. seine Daten einzeln ablegen (bsp Arbeiter->Name)

    Alternativ kannst du, SOFERN KEINE ZEIGER in der Instanz Arbeiter sind das Ganze ohne Stream mit direkter Dateiverarbeitung binär speichern.

    Also mit Windows CreateFile...

    und dann WriteFile auf die Adresse von Arbeiter in der Länge von Arbeiter.
    Christian

    Comment


    • #3
      Danke für die hilfe hat geklappt^^.

      Ich habe die daten einzeln gespeichert am besten zeig ich es:

      Code:
      void Software::Schreibe_Datei(char* Dateiname, arbeiter Arbeiter)
      	{
      		fstream Datei;
      
      		Datei.open(Dateiname, ios::out|ios::app|ios::binary);
      
      		Datei<<Arbeiter.Auto;
      		Datei<<Arbeiter.ID;
      		Datei<<Arbeiter.Mitarbeiter_Status;
      		Datei<<Arbeiter.Nachname;
      		Datei<<Arbeiter.Umsatz;
      		Datei<<Arbeiter.Urlaub;
      		Datei<<Arbeiter.Verdienst;
      		Datei<<Arbeiter.Vorname;
      
      		Datei.close();
      	}
      Das klappt prima^^.

      Doch nun habe ich ein weiteres Problem. Wie lese ich die daten richtig aus?

      Ich habe leider keine richtige Idee wie ich die daten sinnvoll auslesen könnte.

      Wie ich die datei Lade ist mir klar doch wie bekomme ich aus den geladen daten wieder sinnvolle informationen? also wie bekomme ich die daten wieder in eine Struktur?

      Hat jemand ne Idee?
      Zuletzt editiert von Hannes.; 05.08.2008, 17:24.

      Comment


      • #4
        Na exakt umgekehrt

        Struktur mit new anlegen und einem Inputstream
        Christian

        Comment


        • #5
          Soll ich also in der passenden Methode ein stream objekt erstellen dann Die Struktur arbeiter mittels new anlegen und dann den ganzen Vorgang Rückwärts?

          also in etwa so:
          Code:
          arbeiter Software::Lade_Datei(char *Dateiname)
          	{
          		arbeiter *Arbeiter = new arbeiter;
          		fstream Datei;
          		
          
          		Datei.open(Dateiname, ios::in);
          
          		Datei>>Arbeiter.Auto;
          		Datei>>Arbeiter.ID;
          		Datei>>Arbeiter.Mitarbeiter_Status;
          		Datei>>Arbeiter.Nachname;
          		Datei>>Arbeiter.Umsatz;
          		Datei>>Arbeiter.Urlaub;
          		Datei>>Arbeiter.Verdienst;
          		Datei>>Arbeiter.Vorname;
          		
          		Datei.close();
          
          		return Arbeiter;
          	}
          Aber wenn ich das so mache kommt immer eine Fehler meldung das Links von z.b. Auto sich keine Strukur befindet. was mache ich den hier Falsch?

          Comment


          • #6
            arbeiter *Arbeiter

            ist ein Zeiger. Zugriffe darauf nicht mit dem Punkt Operator, sondern mit ->
            Christian

            Comment


            • #7
              http://www.codeguru.com/forum/showthread.php?t=269648

              Mach es einfacher
              Christian

              Comment

              Working...
              X