std::basic_streambuf<CharT,Traits>:: pubsetbuf, std::basic_streambuf<CharT,Traits>:: setbuf
From cppreference.net
<
cpp
|
io
|
basic streambuf
|
public
:
basic_streambuf < CharT, Traits > * pubsetbuf ( char_type * s, std:: streamsize n ) |
(1) | |
|
protected
:
virtual basic_streambuf < CharT, Traits > * setbuf ( char_type * s, std:: streamsize n ) |
(2) | |
1)
Вызывает
setbuf
(
s, n
)
самого производного класса.
2)
Базовая версия этой функции в базовом классе не имеет эффекта. Производные классы могут переопределить эту функцию для разрешения удаления или замены управляемой последовательности символов (буфера) на предоставленный пользователем массив, или для любой другой реализации, специфичной для конкретной цели.
Содержание |
Параметры
| s | - |
указатель на первый
CharT
в предоставленном пользователем буфере
|
| n | - |
количество элементов
CharT
в предоставленном пользователем буфере
|
Возвращаемое значение
1)
Возвращаемое значение
setbuf
(
s, n
)
.
2)
this
Пример
Предоставляет буфер размером 10 КБ для чтения. В Linux утилита strace может быть использована для наблюдения за фактическим количеством прочитанных байт.
Запустить код
#include <fstream> #include <iostream> #include <string> int main() { int cnt = 0; std::ifstream file; char buf[1024 * 10 + 1]; file.rdbuf()->pubsetbuf(buf, sizeof buf); file.open("/usr/share/dict/words"); for (std::string line; getline(file, line);) ++cnt; std::cout << cnt << '\n'; }
Возможный вывод:
356010
Отчеты о дефектах
Следующие отчеты об изменениях поведения, влияющие на дефекты, были применены ретроактивно к ранее опубликованным стандартам C++.
| DR | Applied to | Behavior as published | Correct behavior |
|---|---|---|---|
| LWG 158 | C++98 |
the default behavior of
setbuf
was only specified
if gptr() is not null and not equal to egptr() |
specified as no-op
for all cases |
Смотрите также
|
[virtual]
|
пытается заменить управляемую последовательность символов массивом
(виртуальная защищённая функция-член
std::basic_stringbuf<CharT,Traits,Allocator>
)
|
|
[virtual]
|
предоставляет пользовательский буфер или делает этот filebuf небуферизированным
(виртуальная защищённая функция-член
std::basic_filebuf<CharT,Traits>
)
|
|
[virtual]
|
пытается заменить управляемую последовательность символов массивом
(виртуальная защищённая функция-член
std::strstreambuf
)
|
|
устанавливает буфер для файлового потока
(функция) |