Hirdetés

Keresés

Új hozzászólás Aktív témák

  • Jester01

    veterán

    válasz Gyomman #1064 üzenetére

    Már csak a hibaüzenet hiányzik, no meg hogy teljes lefordítható és futtatható kódot prezentálj. Ebből ugyanis hiányzik maga a példányosítás illetve az egész F_file. Én vettem a fáradságot és értelemszerűen kipótoltam valamivel, az szó nélkül működik. Természetesen ügyeltem arra, hogy a megadott bemeneti stream és elem párosra létezzen operator>> (arra gondolok, hogy neked esetleg ez hibádzik).

    #include <iostream>
    #include <fstream>
    #include <cstring>
    using namespace std;

    template <typename G>
    class F_file
    {
    public:
    F_file(const char* _utvonal, const char* _nev)
    : file(0), length(0), nev(_nev), utvonal(_utvonal) {};
    FILE* file;
    int length;
    const char* nev;
    const char* utvonal;
    };

    template<typename G>
    void operator>>(istream& in, F_file<G>& F)
    {
    if (F.file) fclose(F.file);
    char* ttemp=new char[strlen(F.nev)+strlen(F.utvonal)+5];
    strcpy(ttemp,F.utvonal);
    strcat(ttemp,F.nev);
    strcat(ttemp,".dat");
    F.file=fopen(ttemp,"a");

    G temp;
    int len;
    (in>>len).ignore(1); //szóközt eldobjuk
    F.length+=len; //hosszt megnöveljük
    while((in>>temp).ignore(1))
    {
    fwrite(&temp,sizeof(G),1,F.file);
    }

    delete [] ttemp;
    }

    int main(int argc, char *argv[])
    {
    F_file<int> f("/tmp/", "test");
    cin >> f;
    return 0;
    }

    Az fwrite hívásból mellesleg hiányzott egy & jel, és úgy egészében véve sem értem mit akarsz csinálni, de ez így legalább valamit csinál :U

Új hozzászólás Aktív témák