将数据从文件读取到类的数组中

时间:2012-05-01 01:59:04

标签: c++ arrays

//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;
}

当我运行它时它会显示构造函数值,然后显示应该进入数组并显示它们的文件中的数据。我不确定我是否正确地将数据正确地放入类数组中。

1 个答案:

答案 0 :(得分:1)

这是一个问题:

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;
}

计数器首先递增,因此student[i]指的是之后的元素刚刚更新的元素。