fehlerflag selber setzen?



  • hallo,
    ich habe folgende funktion eben gerade geschrieben:

    ifstream& operator>>(ifstream &is, digit *&pa)
    {
        digit *pointer=pa=new digit;
        digit *old=NULL;
        for(;;)
        {
            if(!is.read((char*)&(pointer->wert), sizeof(float)))
                if(is.eof())
                    break;
                else cerr<<"fehler beim einlesen der daten!"<<endl;
            else;
            old=pointer;
            pointer=pointer->pNext=new digit;
        };
        delete pointer;
        old->pNext=NULL;
        return is;
    }
    

    meine frage ist wie ich jetzt bei der rückegabe des is streams, von hand, also selbst ein fehler flag setzen kann, das ich dann im main wieder abfragen kann, damit ich die zeile mit

    else cerr<<"fehler beim einlesen der daten!"<<endl;
    

    weglassen kann und die ganze geschichte dann über das fehlerflag im main abhandel.

    schonmal jetzt danke.

    tschau TBone



  • ifstream &operator >> (ifstream &is, digit *&pa, bool &flag)
     { if (fehler) flag = true; else flag = false; }
    
    in der main dann:
    ifstream test;
    bool fehler;
    // aufruf mit 'fehler' als boolparameter
    if (fehler) { machwas }
    

    oder: custom exceptions

    [ Dieser Beitrag wurde am 14.05.2003 um 09:35 Uhr von Korbinian editiert. ]



  • das geht etwa so

    ifstream& operator>>(ifstream &is, digit *&pa)
    {
        digit *pointer=pa=new digit;
        digit *old=NULL;
        for(;;)
        {
            if(!is.read((char*)&(pointer->wert), sizeof(float)))
                if(is.eof())
                    break;
                else 
                    is.setstate(ios::badbit)
            else;
            old=pointer;
            pointer=pointer->pNext=new digit;
        };
        delete pointer;
        old->pNext=NULL;
        return is;
    }
    

    die ganze fehler behandlung ist in basic_ios http://www.dinkumware.com/manuals/reader.aspx?#basic_ios



  • hallo,

    danke dir dimah, war genau das was ich gesucht hatte!
    natürlich auch dir danke korbinian für deine mühe!

    tschau
    TBone


Anmelden zum Antworten