Seite 1 von 1

Daten in ein Datei Schreiben und lesen

Verfasst: 21. Juli 2011 17:46
von Sebleb
Hallo zusammen!
ich bin neulinge in c++ und vesuche zwei classen Input und saveload zuschreiben; in input soll Funktionswerte(x und y),die ich später plotten möchte,ausgewertet. in zweite class saveload soll die Daten geschrieben bzw. gelesen werden und der Pfade soll über konsole eigegeben .
kann jamend mein Code kurz angucken und mir tipps geben wie ich das zum laufen krigen kann;

hier ist Project.h

Code: Alles auswählen

struct XYpair{
  double x;
  double y;
  XYpair(double x, double y):x(x),y(y){}
};

class INPUT{

 private:
  int psize;
  double xmin,xmax;
  int wahl;
  std::vector<XYpair> dptr;
public:
  void setvalue();
  std::vector<XYpair> Dataplot(int psize);
  int menu();
};
class Saveload{
private:
  ifstream idatei;
  ofstream odatei;
  std::vector<XYpair> Vp;
  char pfad [200];
public:
  void save(int n, std::vector<XYpair>);
  std::vector<XYpair> load();
};
#endif
ein Abschnitt von project.cpp

Code: Alles auswählen

std::vector<XYpair> INPUT::Dataplot(int psize){
  
  double xr=(double)(xmax-xmin)/psize;
  double X=xmin;
  int i;
  std::vector<XYpair> dptr;
  X=xmin;
  for(i=0; i<psize; i++){
    dptr.push_back(XYpair(X,sin(X)));
    X+=xr;
  }
  return dptr;
}

void Saveload::save(int n, std::vector<XYpair> v){
  
  std::vector<XYpair> Vp;
  int i;
  for(i=0;i<=n-1;i++){
    Vp[i]=v[i];
  }
  
  cout<< "Unter welchem Pfadname soll es gepeichert werden?"<< endl;
  cin>>pfad;
  idatei.open(pfad, ios::in | ios::binary);
  
  if(!idatei){cout <<"Fehler beim Öffnen neuer Datei"<<endl;}
  
  idatei.read(Vp, sizeof(Vp)/sizeof(Vp[0])); 
  
  idatei.close()
    }

std::vector<XYpair> Saveload:: load(){
  int n;
  cout<<"von welchem Pfad soll ausgelesen werden"<< endl;
  cin>>pfad;
  
  odatei.open(pfad, ios::out | ios::binary);

  if(!odatei){cout <<"Fehler beim Öffnen der Datei"<<endl;}
  std::vector<XYpair> ptr;
  odatei.write(Vp,size(n));
  for(i=0; i<n; i++)
    ptr[i]=Vp[i];
  odatei.close();
 return ptr;
}
abschitt von main.cpp

Code: Alles auswählen

int main(){
  int Wahl;
  int psize=15;
  std::vector<XYpair> V;
  
NPUT fdata;
  Saveload pdata;
  Wahl=fdata.menu();
 if(Wahl==1){
  fdata.setvalue();
  V=fdata.Dataplot(psize);
  pdata.save(psiz,V);
   }
 else if(Wahl==2){
    
   V =pdata.load();
   for(int i=0; i<psize-1; i++){
      cout <<"V.x"<<V[i].x<<"V.y"<<V[i].y<<'\n';
    }
mein probleme ist eigentlich beim Lesen und schreiben , ich habe mehrere syntax Fehler.

ich bin für jeder Hilfe sehr dankbar .

Gruß
Seb

Re: Daten in ein Datei Schreiben und lesen

Verfasst: 21. Juli 2011 18:32
von franzf
Sebleb hat geschrieben:mein probleme ist eigentlich beim Lesen und schreiben , ich habe mehrere syntax Fehler.
Gut dass du das weißt. Der Compiler sagt dir dann auch ganz genau, was ihm nicht passt.
Wenn du damit nichts anfangen kannst, solltest du die Meldungen auch hier posten, dann können wir dir sagen, was der Compiler anmeckert.
Die wenigsten haben die Zeit (und Muse/Lust), das in einen Compiler zu werfen, und dir alle Fehler aufzulisten. Wenn du das nicht selber machst, lernst du es nie - und der Umgang mit dem Compiler und das Fehler lesen lernen ist für einen Programmierer unerlässlich.

Re: Daten in ein Datei Schreiben und lesen

Verfasst: 21. Juli 2011 18:34
von Christian81
und abgesehen davon - '#endif' - zumindest im geposteten Code fehlt ein '#ifdef' ...

Re: Daten in ein Datei Schreiben und lesen

Verfasst: 21. Juli 2011 18:35
von Sebleb
Compilermeldung:

Code: Alles auswählen

g++ -c project.cpp
project.cpp: In member function ‘void Saveload::save(int, std::vector<XYpair>)’:
project.cpp:50:42: error: no matching function for call to ‘std::basic_ifstream<char>::read(std::vector<XYpair>&, unsigned int)’
project.cpp:50:42: note: candidate is:
/usr/include/c++/4.6/istream:467:7: note: std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT, _Traits>::read(std::basic_istream<_CharT, _Traits>::char_type*, std::streamsize) [with _CharT = char, _Traits = std::char_traits<char>, std::basic_istream<_CharT, _Traits>::char_type = char, std::streamsize = int]
/usr/include/c++/4.6/istream:467:7: note:   no known conversion for argument 1 from ‘std::vector<XYpair>’ to ‘std::basic_istream<char>::char_type* {aka char*}’
project.cpp:53:2: error: expected ‘;’ before ‘}’ token
project.cpp: In member function ‘std::vector<XYpair> Saveload::load()’:
project.cpp:64:25: error: ‘size’ was not declared in this scope
project.cpp:65:7: error: ‘i’ was not declared in this scope
make: *** [project

Re: Daten in ein Datei Schreiben und lesen

Verfasst: 21. Juli 2011 18:38
von Sebleb
#ifdef fehlt nicht das ist nur ein Abschnitt;

Re: Daten in ein Datei Schreiben und lesen

Verfasst: 21. Juli 2011 19:28
von franzf

Code: Alles auswählen

error: no matching function for call to ‘std::basic_ifstream<char>::read(std::vector<XYpair>&, unsigned int)’
project.cpp:50:42: note: candidate is:
/usr/include/c++/4.6/istream:467:7: note: std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT, _Traits>::read(std::basic_istream<_CharT, _Traits>::char_type*, std::streamsize) [with _CharT = char, _Traits = std::char_traits<char>, std::basic_istream<_CharT, _Traits>::char_type = char, std::streamsize = int]
/usr/include/c++/4.6/istream:467:7: note:   no known conversion for argument 1 from ‘std::vector<XYpair>’ to ‘std::basic_istream<char>::char_type* {aka char*}’
sagt dir, dass der erste Parameter für read() nicht in den erwarteten Typ konvertiert werden kann. Du übergibst einen std::vector<XPair>, erwartet wird ein char*. Das lässt sich nicht konvertieren (wie auch).