/* tuot_pp.cpp */ // Projektiin lis„ksi: string.cpp mjonot.c #include #include #include #include #include #include #include #include class cTuote { string nimike; double hinta; int kpl; public: alusta(char *rivi) { // alustaa muodosta Volvo|4500|3 istrstream sstr(rivi); sstr >> *this; } cTuote(const char *n="",double h=0,int k=0) { nimike=n; hinta=h; kpl=k; } friend istream &operator>>(istream &is,cTuote &tuote); friend ostream &operator<<(istream &os,const cTuote &tuote); ostream &tulosta(ostream &os) const ; }; ostream &operator<<(ostream &os,const cTuote &tuote) { return tuote.tulosta(os);} ostream &cTuote::tulosta(ostream &os) const { long oldf = os.setf(ios::left); os << setw(20) << nimike << " " << setiosflags(ios::right) << setw(7) << hinta << " " << setw(4) << kpl; os.flags(oldf); return os; } istream &operator>>(istream &is,cTuote &tuote) { char jono[50]; is.getline(N_S(jono),'|'); tuote.nimike = poista_tyhjat(jono); is.getline(N_S(jono),'|'); if ( sscanf(jono,"%lf",&tuote.hinta) != 1 ) return is; is.getline(N_S(jono),'\n'); sscanf(jono,"%d",&tuote.kpl); return is; } class cTuotteet { string nimi; public: cTuotteet(const char *n) { nimi = n; } int tulosta(ostream &os) const; }; int cTuotteet::tulosta(ostream &os) const { cTuote tuote; char rivi[80]; ifstream f(nimi.c_str()); if ( !f ) return 1; cout << "\n\n\n"; cout << "-------------------------------------------" << endl; while ( !f.eof() ) { if ( !f.getline(N_S(rivi)) ) continue; if ( tuote.alusta(rivi) ) continue; os << tuote << endl; } cout << "-------------------------------------------\n"; cout << "\n\n\n" << endl;; return 0; } int main(void) { cTuotteet tuotteet("TUOTTEET.DAT"); if ( tuotteet.tulosta(cout) ) { cout << "Tuotteita ei saada luetuksi!" << endl; return 1; } return 0; }