Daten in ein Datei Schreiben und 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 in ein Datei Schreiben und lesen

Beitrag 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
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Re: Daten in ein Datei Schreiben und lesen

Beitrag 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.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: Daten in ein Datei Schreiben und lesen

Beitrag von Christian81 »

und abgesehen davon - '#endif' - zumindest im geposteten Code fehlt ein '#ifdef' ...
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Sebleb
Beiträge: 15
Registriert: 17. Juli 2011 19:17

Re: Daten in ein Datei Schreiben und lesen

Beitrag 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
Sebleb
Beiträge: 15
Registriert: 17. Juli 2011 19:17

Re: Daten in ein Datei Schreiben und lesen

Beitrag von Sebleb »

#ifdef fehlt nicht das ist nur ein Abschnitt;
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Re: Daten in ein Datei Schreiben und lesen

Beitrag 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).
Antworten