Spec-Zone.ru › C++

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 в предоставленном пользователем буфере или нулевой указатель
n - количество элементов CharT в предоставленном пользователем буфере или ноль

Возвращаемое значение

this

Примечания

Устаревший буфер потока std::strstreambuf или устройство boost.IOStreams boost::basic_array можно использовать для реализации буферизации ввода-вывода с помощью предоставленного пользователем массива символов переносимым способом.

Пример

Проверка функциональности 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++)

См. также

pubsetbuf
вызывает setbuf()
(открытая функция-член std::basic_streambuf<CharT,Traits>)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/io/basic_stringbuf/setbuf

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API