Daten sicher schreiben bzw. lesen

Du bist neu in der Welt von C++? Dann schau hier herein!
Antworten
Sebleb
Beiträge: 15
Registriert: 17. Juli 2011 19:17

Daten sicher schreiben bzw. lesen

Beitrag von Sebleb »

Hallo!

in meinem Programm habe ich zwei Methoden; eine save() soll die Daten
in einer Datei schreiben und die andere laden() Kann die Daten einfach
wieder lesen. meine Frage ist wie kann ich nun die beiden Methoden
ändern, damit ich sicher davon ausgehe,dass die Daten richtig
geschrieben bzw geladen sind.


Hier sind Abschitte von meinem code:
data.h

Code: Alles auswählen

class DATA{

 private:
 
   int dmin,fmas;
   int dmax;
   int Dmun;
  
public:

  DATA(int a,int b, int c, int d,int e);
  void setvalue();     
   void save (); 
   void load ();   
data.cpp

Code: Alles auswählen

void DATA::save(){

  std::string fname;
  cout<<"filname eingeben"<<endl;
  cin >> fname;

  ofstream outf;
  outf.open( fname.data()); 
  if( !out ) {
    cout << "Datei " << fname << "konnte nicht geöffnet werden" << endl;}

  out <<dmin;
   out<<dmax;
   out <<fmas;
    out <<dmun;

  outf.close();

}
  
void DATA::load(){
 
   std::string lf;                    
  cout << "Dateiname  eingeben: " << endl;
  cin >> lf;  
  ifstream inf;
   inf.open(lf.data() );              
  if( !inf ) {
    cout << "Datei " << lf << " konnte nicht geöffnet werden" << endl;
  }

    inf >> dmin;
    inf >>dmax;
    inf >> fmas;
    inf >>dmun;

    inf.close(); 
   }
Danke schönmal im Voraus

Gruß
Seb
McQT
Beiträge: 2
Registriert: 25. Dezember 2010 11:13
Kontaktdaten:

Re: Daten sicher schreiben bzw. lesen

Beitrag von McQT »

Hi :)

Definier erst doch mal, was du mit "sicher" meinst.,
Du kannst die Fehlermeldungen auswerten und weisst dann, das alles in Ordnung ist.
Du kannst aber auch nach dem Speichern die Datei nochmal Laden und den Inhalt vergleichen.

Mehr kann ich dir nun auch nicht dazu sagen.
Das Laden und Speichern übernimmt ohnehin das Betriebssystem.

Gruß Tarik
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Re: Daten sicher schreiben bzw. lesen

Beitrag von franzf »

Sicherer wird etwas dann, wenn Aufgaben getrennt werden und einzelne Komponenten dann tests bestehen müssen. Bei dir ist im Moment Data zum Halten der Daten zuständig UND zum Lesen und Schreiben selbiger. Dann wird in read und write direkt vom User (!) ein Dateiname per prompt abgefragt! Das geht gar nicht! Was machst du, wenn du im Programm schon einen Dateinamen hast und diesen auslesen willst? Sagst du dem User, er soll jetzt bitte (wenn er gefragt wird) diesen Dateinamen eingeben, sonst geht das Programm kaputt? :D
Wie diese Aufteilung bei dir jetzt ausschauen soll, hängt davon ab, was du damit noch alles anstellen willst.

Und prinzipiell:
Wenn du dir nicht sicher bist, ob etwas funktioniert, dann testet man es in einem ganz kurzen Beispielprogramm:

Code: Alles auswählen

#include <iostream>
#include <fstream>
using namespace std;

const char* textfile = "test.txt";

int main() {
    {
        int d1=5, d2=7, d3=100;
        ofstream out(textfile);
        out << d1;
        out << d2;
        out << d3;
    }
    
    {
        int d1,d2,d3;
        ifstream in(textfile);
        in >> d1 >> d2 >> d3;
        cout << d1<< " " << d2 << " " << d3 << endl;
    }
}
Ausgabe:

Code: Alles auswählen

57100 -1219267115 -1074172660
Und, hat es funktioniert?
Antworten