Namespaces
Variants

std::basic_stringbuf<CharT,Traits,Allocator>:: setbuf

From cppreference.net
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> )