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

  • nukeleo

    csendes tag

    Sziasztok!

    Ittlenne a kódom: nem tudom miert csak egy sort olvas be a forrásfájlbol, a bufferba? Segitsetek, lehet a beolvas függvényem nem jo, vagy a buff tárolo, nem tudom...
    /*csomo felesleg is van most benne amit nem használtam még, tekintsetek el töle*/
    THX nagyon elöre is; nukeleo

    #include <cstring>
    #include <iostream>
    #include <fstream>

    using namespace std;

    class buffer {
    char* buff;
    int size;
    public:
    buffer():buff(0),size(0){}
    buffer(const buffer&);
    buffer& operator=(const buffer&);
    buffer& operator+=(const buffer&);
    bool operator==(const buffer&);
    buffer& buffer:: operator=(const char*);
    buffer& buffer:: operator+=( const char*);
    bool buffer:: operator==(const char*);
    friend void beolvas(buffer &);
    friend void kiir(buffer &);
    //void beolvas(const char*);
    friend ostream& operator<<(ostream& s, const buffer b);
    friend istream& operator>>(istream& s, const buffer b);
    ~buffer(){ delete[] buff; }

    };
    /*void beolvas(const char* file)
    {
    fstream fp(file,ios::in);
    char *c = new char[500];

    fp.close();
    fp>>c;
    cout<<c;
    }
    */

    buffer::buffer(const buffer& e)
    {
    buff=new char[(size=e.size)+1];
    if (e.buff)
    strcpy(buff,e.buff);
    }

    buffer& buffer:: operator+=( const char* value)
    {
    char* temp=new char[size = strlen(buff)+ strlen(value) +1];
    strcpy(temp,buff);
    strcat(temp, value);
    delete[] buff;
    buff = temp;
    return *this;
    }

    buffer& buffer:: operator+=(const buffer& e)
    {
    char* temp=new char[size+=(e.size+1)];
    strcpy(temp,buff);
    strcat(temp,e.buff);
    delete[] buff;
    buff=temp;
    return *this;
    }

    buffer& buffer:: operator=(const char* value)
    {
    delete[] buff;
    if( size=strlen(value))
    {
    buff=new char[size+1];
    strcpy(buff,value);
    }
    return *this;
    }


    buffer& buffer:: operator=(const buffer& e)
    {
    if( this!= &e)
    {
    delete[] buff;
    buff=new char[size=e.size];
    strcpy(buff,e.buff);
    }
    return *this;
    }

    bool buffer:: operator==(const char* value)
    {
    if(size==strlen(value)) return true;

    else return false;
    }


    bool buffer:: operator==(const buffer& e)
    {
    if(size==e.size) return true;

    else return false;
    }

    ostream& operator<<(ostream& s, const buffer b)
    {
    //for(int i=0;i<b.size;++i)
    //{
    if(b.size)
    s<<b.buff;
    //}
    return (s);

    }

    int karakterek_szama()
    {
    fstream fp(''adat.txt'' ,ios::in);
    char d;
    int k=0;
    while(!fp.eof())
    {
    fp.get(d);
    ++k;
    }
    fp.close();
    return k;

    }

    istream& operator>>(istream& s, buffer b)
    {

    int k=karakterek_szama();
    delete[] b.buff;
    b.buff=new char[(b.size=k)+1];
    for(int i=0;i<b.size;++i)
    {
    s>>b.buff;
    }
    return (s);
    }


    void beolvas(buffer& b)
    {
    int k=karakterek_szama();
    delete[] b.buff;
    b.buff=new char[(b.size=k)+1];
    fstream fp(''adat.txt'' ,ios::in);
    while(!fp.eof())
    {
    fp.getline(b.buff,b.size);
    }
    fp.close();
    cout<<k;
    }

    void kiir(buffer& b)
    {
    fstream fp(''adat2.txt'',ios::out);
    fp<<b.buff;
    fp.close();
    }
    char menu ()
    {
    char n;
    cout<<'' MENU \n\n'';
    cout<<''1: File beolvasás \n'';
    cout<<''2: Szöveg hozzáadása a fájlhoz \n'';
    cout<<''3: Aktualis buffer tartalma\n'';
    cout<<''4: Mentés\n'';
    cout<<''0: Exit \n'';
    cin>>n;
    return n;
    }

    int main(){
    char m;
    buffer a;
    buffer b;
    char *c = new char[20];
    char *d = new char[500];


    while ((m = menu())!= '0')
    {
    switch (m)
    {
    case '1':
    beolvas(b);
    cin.get();
    cin.get();
    break;

    case '2':
    cin>>d;
    b+=d;
    ;
    break;
    case '3':
    cout<<b;
    cin.get();
    cin.get();
    break;

    case '4':
    kiir(b);
    break;
    }
    system (''CLS'');
    }
    }

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