Listing 11 The function read(char *, int)

// istread -- istream::read(char *, int)
#include <istream>

istream& istream::read(char *s, int n)
    {   // get at most n bytes
    _Chcount = 0;
    _TRY_IO_BEGIN
    if (ipfx(1))
       {   // extract arbitrary characters
       int ch;
       for (; 0 < n; --n)
          if ((ch = rdbuf()->sbumpc()) == EOF)
             {   // record eof and quit
             setstate(failbit);
             break;
             }
          else
             *s++ = ch, ++_Chcount;
       }
    isfx();
    _CATCH_IO_END
    return (*this);
    }

// End of File