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

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

4

1 回答 1

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]指的是刚刚更新的元素之后的元素。

于 2012-05-01T02:11:13.933 回答