# std::basic_streambuf<CharT,Traits>::sgetn, std::basic_streambuf<CharT,Traits>::xsgetn

From cppreference.com
< cpp‎ | io‎ | basic streambuf

std::streamsize sgetn( char_type* s, std::streamsize count ); | (1) |
protected: virtual std::streamsize xsgetn( char_type* s, std::streamsize count ); | (2) |

1) Calls `xsgetn(s, count)` of the most derived class.
2) Reads `count` characters from the input sequence and stores them into a character array pointed to by `s`. The characters are read as if by repeated calls to sbumpc(). That is, if less than `count` characters are immediately available, the function calls uflow() to provide more until Traits::eof() is returned.
Classes derived from `std::basic_streambuf` are permitted to provide more efficient implementations of this function.

### Parameters

s | - | pointer to the beginning of a char_type array
count | - | maximum number of characters to write

### Return value

The number of characters successfully read. If it is less than `count` the input sequence has reached the end.

### Notes

The rule about "more efficient implementations" permits bulk I/O without intermediate buffering: that's how std::ifstream::read simply passes the pointer to the POSIX `read()` system call in some implementations of iostreams

### Example

| This section is incomplete Reason: no example

### See also

sputn | invokes xsputn() (public member function)

Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/io/basic_streambuf/sgetn&oldid=101759"