0

次のコードがあり、オブジェクトを構築したいと考えています。どうすればできますか?何か案は?クラスは {sting,int,int} 型です。

コード:

void StudentRepository::loadStudents(){
    ifstream fl;
    fl.open("studs.txt");
    Student A();
    if(fl.is_open()){
        while(!(fl.eof())){
            getline(???); //i dont knwo houw coudl i limit what i want were...

        }
    }
    else{
        cout<<"~~~ File couldn't be open! ~~~"<<endl;
    }
}

ファイル機能に保存:

void StudentRepository::saveStudents(){
    ofstream fl;
    fl.open("studs.txt");
    if(fl.is_open()){
        for(unsigned i=0; i<students.size(); i++){
            fl<<students[i].getName();
            fl<<",";
            fl<<students[i].getID();
            fl<<",";
            fl<<students[i].getGroup();
            fl<<","<<endl;
        }
    }
    else{
    cout<<"~~~ File couldn't be open! ~~~"<<endl;
}

いくつかの制限を実装しようとしましたが、うまくいきません... どうすればできますか?

最初はオブジェクトをファイルに書き込んだだけですが、それらをオブジェクトに戻すのは難しいです....ファイルの内容:

maier ewew 123 232
tudor efsw 13 2323
4

1 に答える 1

2

Studentタイプの入力演算子と出力演算子のオーバーロードは機能しますか?

#include <iostream>
#include <string>
#include <fstream>

using namespace std;

class Student {
public:
    Student() : name(""),id(0),group(0) {}
    Student(const string &_name, const int &_id, const int &_group) : name(_name), id(_id), group(_group) {}

    friend ostream &operator<<(ostream &out, const Student &stud);
    friend istream &operator>>(istream &in, Student &stud);
private:
    string name;
    int id;
    int group;
};    

ostream &operator<<(ostream &out, const Student &stud) {
    out << stud.name << " " << stud.id << " " << stud.group << endl;
    return out;
}

istream &operator>>(istream &in, Student &stud) {
    string name, surname;
    in >> name >> surname >> stud.id >> stud.group;
    stud.name = name + " " + surname;
    return in;
}    

int main(int argc, char **argv) {

    Student john("john doe", 214, 43);
    Student sally("sally parker", 215, 42);
    Student jack("jack ripper", 114, 41);

    ofstream out("studentfile.txt");
    out << john;
    out << sally;
    out << jack;
    out.close();

    Student newstud;
    ifstream in("studentfile.txt");
    in >> newstud;
    cout << "Read " << newstud;
    in >> newstud;
    cout << "Read " << newstud;
    in >> newstud;
    cout << "Read " << newstud;
    in.close();

    return 0;
}    

I / Oにいくつかの標準チェックを追加して、読み取っているものがすべて有効であることを確認します。

于 2012-11-15T00:14:48.823 に答える