std::basic_streambuf<CharT,Traits>::sgetn, std::basic_streambuf<CharT,Traits>::xsgetn
std::streamsize sgetn( char_type* s, std::streamsize count ); |
(1) | |
protected: virtual std::streamsize xsgetn( char_type* s, std::streamsize count ); |
(2) |
1) Вызывает
xsgetn(s, count) самого производного класса.
2) Читает
count символов из входной последовательности и сохраняет их в массив символов, на который указывает s. Символы считываются как при многократных вызовах sbumpc(). То есть, если доступно меньше count символов, функция вызывает uflow() для получения дополнительных данных до тех пор, пока не будет возвращено значение Traits::eof().
Классы, производные от
std::basic_streambuf, могут предоставить более эффективные реализации этой функции.
Параметры
| s | - | указатель на начало массива char_type |
| count | - | максимальное количество символов для чтения. |
Возвращаемое значение
Количество успешно прочитанных символов. Если оно меньше count, входная последовательность достигла конца.
Примечания
Правило о «более эффективных реализациях» позволяет выполнять операции ввода-вывода блоками без промежуточного буферизации: именно так std::ifstream::read просто передает указатель на системный вызов POSIX read() в некоторых реализациях iostreams.
Пример
См. также
вызывает xsputn() (публичный член-функция) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/io/basic_streambuf/sgetn