2012-05-01 22 views
1
//Student file 
#include <iostream> 
#include <fstream> 
#include <string> 
#include <iomanip> 
using namespace std; 

#include "student.h" 
#define cap 100 
void main() 
{  string s; 
    class student student[cap],l; 
    int i; 
    fstream f; 

    i=0; 
    cout << "Enter the file name: "; //Display to enter the file name 
    cin >>s; 


    f.open(s.data(),ios::in); 
    if(!f.is_open()) 
     cout << "could not open file"; 
    while(i<cap && !f.eof()) 
    {  cout << "good"; 
     student[i].get(f); 

//Display if okay 
     if(f.good()) 
     { 
      i++; 
      student[i].put(cout); 
      cout << i; 
     } 
    } 
     f.close(); 

} 
class student 
{ 
    public: 
     student(); //Constructor without parameters 
     student(int,string,string,int,float); //Constructor with parameters 
     ~student(); //Deconstructors 
     bool get(istream &); //Input 
     void put(ostream &); //Output 
     int read_array(string,int); 
    private: 
     int id,age; 
     float gpa; 
     string last,first; 
}; 

student::student() 
{ 
    id = 0; 
    first = "null"; 
    last = "null"; 
    age = 0; 
    gpa = 0.0; 
} 
bool student::get(istream &in) 
{ 

    in >> id >> first >> last >> age >> gpa; 
    return(in.good()); 
} 
void student::put(ostream &out) 
{ 
    out << id << first << last << age << gpa; 
} 

これを実行すると、配列に入って表示されるべきファイルのデータが上書きされて表示されます。私はクラス配列にデータを正しく配置する正しい方法を実行しているかどうかはわかりません。そうstudent[i]がちょうど更新されたものの後の要素を指し、カウンタが最初インクリメントされファイルからデータをクラスの配列に読み込む

if (f.good()) 
{ 
    // student[i] has just been read from the file. 
    i++;     // Increment counter. 
    student[i].put(cout); // Print whatever was in the next element. 
    cout << i; 
} 

+1

'void main()'? ಠ_ಠhttp://www2.research.att.com/~bs/bs_faq2.html#void-main – chris

+1

['while(!f.eof())'](http://coderscentral.blogspot.com/2011/ 03/reading-files.html)? –

答えて

1

は、ここで一つの問題です。

+0

うわー、ありがとう、私はそれが配列にそれをするだろうと気付かなかった。しかしそれは意味をなさない。私はそれを感謝します! – MIkey27

関連する問題