std::basic_stringbuf<CharT,Traits,Allocator>:: setbuf
|
protected
:
virtual std:: basic_streambuf < CharT, Traits > * setbuf ( char_type * s, std:: streamsize n ) |
||
Если s является нулевым указателем и n равен нулю, данная функция не оказывает никакого эффекта.
В противном случае, эффект определяется реализацией: некоторые реализации ничего не делают, в то время как некоторые реализации очищают std::string член, используемый в настоящее время в качестве буфера, и начинают использовать предоставленный пользователем массив символов размером n , первый элемент которого указывается s , в качестве буфера и входной/выходной символьной последовательности.
Эта функция защищена и виртуальна, она может быть вызвана только через
pubsetbuf()
или из функций-членов пользовательского класса, производного от
std::basic_stringbuf
.
Содержание |
Параметры
| s | - | указатель на первый CharT в предоставленном пользователем буфере или null |
| n | - | количество элементов CharT в предоставленном пользователем буфере или ноль |
Возвращаемое значение
this
Примечания
Устаревший потоковый буфер
std::
strstreambuf
или устройство boost.IOStreams
boost::basic_array
могут использоваться для реализации буферизации ввода-вывода над пользовательским массивом char в переносимом способе.
Пример
Тестирование функциональности setbuf для stringstream.
#include <iostream> #include <sstream> int main() { std::ostringstream ss; char c[1024] = {}; ss.rdbuf()->pubsetbuf(c, 1024); ss << 3.14 << '\n'; std::cout << c << '\n'; }
Вывод:
3.14 (on GNU g++/libstdc++ and SunPro C++/roguewave) <nothing> (on MS Visual Studio 2010, SunPro C++/stlport4, CLang++/libc++)
Смотрите также
|
вызывает
setbuf
(
)
(публичная функция-член
std::basic_streambuf<CharT,Traits>
)
|