std::strstreambuf:: setbuf
|
protected
:
virtual streambuf * setbuf ( char * s, std:: streamsize n ) ; |
(устарело в C++98)
(удалено в C++26) |
|
Если s является нулевым указателем и n равен нулю, данная функция не оказывает никакого эффекта.
В противном случае, эффект определяется реализацией: некоторые реализации ничего не делают, тогда как некоторые реализации освобождают динамический массив-член, используемый в качестве буфера, и начинают использовать предоставленный пользователем массив символов размером n , на первый элемент которого указывает s .
Эта функция защищена и виртуальна, она может быть вызвана только через
pubsetbuf()
или из функций-членов пользовательского класса, производного от
std::strstreambuf
.
Содержание |
Параметры
| s | - | указатель на первый байт в предоставленном пользователем буфере |
| n | - | количество байт в предоставленном пользователем буфере |
Возвращаемое значение
this
Пример
Тест реализации для проверки поддержки функции
setbuf()
на динамическом strstream (результат получен с помощью Sun Studio):
#include <iostream> #include <strstream> int main() { char a[100] = {}; std::strstream str; str.rdbuf()->pubsetbuf(a, sizeof a); str << "Test string" << std::ends; std::cout << "user-provided buffer holds \"" << a << "\"\n"; }
Возможный вывод:
user-provided buffer holds "Test string"
Отчеты о дефектах
Следующие отчеты об изменениях в поведении, содержащие описания дефектов, были применены ретроактивно к ранее опубликованным стандартам C++.
| DR | Применяется к | Поведение в опубликованной версии | Корректное поведение |
|---|---|---|---|
| LWG 66 | C++98 |
эффект от
setbuf()
был "выполняет операцию,
которая определяется отдельно для каждого класса, производного от
strstreambuf
",
но нет классов, производных от
strstreambuf
|
эффект является
определяемым реализацией |
Смотрите также
|
вызывает
setbuf
(
)
(публичная функция-член
std::basic_streambuf<CharT,Traits>
)
|
|
|
[virtual]
|
заменяет буфер пользовательским массивом, если разрешено
(виртуальная защищенная функция-член
std::basic_streambuf<CharT,Traits>
)
|
|
[virtual]
|
пытается заменить управляемую последовательность символов массивом
(виртуальная защищенная функция-член
std::basic_stringbuf<CharT,Traits,Allocator>
)
|
|
[virtual]
|
предоставляет пользовательский буфер или делает этот filebuf небуферизованным
(виртуальная защищенная функция-член
std::basic_filebuf<CharT,Traits>
)
|