ifstream: gcount() liefert nach ">>" Operation 0 zurück :(



  • Ich habe, wie der Titel schon sagt ein problem mit ifstream.

    Ich habe eine Instanz "file" von ifstream. ( Datei wurde erfolgreich geöffnet )

    Nun habe ich noch einen dynamisch allozierten Puffer buf. ( mittels new alloziert)

    Der Puffer ist vom typ char*.

    Nach der Operation

    /* Lese je ein byte */
    file>>buf[i];
    

    gibt gcount 0 zurück.

    if (file.gcount() == 0)
    {
        cerr<<"Zero :( "<<endl;
    }
    

    gcount gibt ja die anzahl der bytes der letzten Input operation zurück.
    Nun ja: file>>buf "liest" ja aus file und "schreibt" in buf.

    Mittels gcount wollte ich testen ob eof erreicht wurde.
    ( Mir wurde das testen mittels file.eof() abgeraten. )

    Aber nun liefert gcount dauenrd 0 raus. Eigentlich sollte es 1 zurückgeben, tut es aber nicht.

    Ich freue mich auf baldige Antworten.

    MfG, problem



  • problem schrieb:

    Ich habe, wie der Titel schon sagt ein problem mit ifstream.

    Ich habe eine Instanz "file" von ifstream. ( Datei wurde erfolgreich geöffnet )

    Nun habe ich noch einen dynamisch allozierten Puffer buf. ( mittels new alloziert)

    Der Puffer ist vom typ char*.

    Nach der Operation

    /* Lese je ein byte */
    file>>buf[i];
    

    gibt gcount 0 zurück.

    if (file.gcount() == 0)
    {
        cerr<<"Zero :( "<<endl;
    }
    

    gcount gibt ja die anzahl der bytes der letzten Input operation zurück.
    Nun ja: file>>buf "liest" ja aus file und "schreibt" in buf.

    Mittels gcount wollte ich testen ob eof erreicht wurde.
    ( Mir wurde das testen mittels file.eof() abgeraten. )

    Aber nun liefert gcount dauenrd 0 raus. Eigentlich sollte es 1 zurückgeben, tut es aber nicht.

    Ich freue mich auf baldige Antworten.

    MfG, problem

    EDIT: Hat sich erledigt! nach read() gab gcount das richtige zurück, bloß nach >> net.


Log in to reply