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 в предоставленном пользователем буфере или null
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/w/cpp/io/basic_stringbuf/setbuf

Spec-Zone.ru

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