Spec-Zone.ru › C++

std::strstreambuf::setbuf

protected:
virtual streambuf* setbuf( char* s, std::streamsize n );

Если s является указателем на null и 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
эффект определяется реализацией

См. также

pubsetbuf
вызывает setbuf()
(общедоступная функция-член std::basic_streambuf<CharT,Traits>)
setbuf
[virtual]
заменяет буфер на массив, определённый пользователем, если разрешено
(виртуальная защищённая функция-член std::basic_streambuf<CharT,Traits>)
setbuf
[virtual]
пытается заменить управляемую последовательность символов массивом
(виртуальная защищённая функция-член std::basic_stringbuf<CharT,Traits,Allocator>)
setbuf
[virtual]
предоставляет буфер, предоставленный пользователем, или делает этот filebuf небуферизованным
(виртуальная защищённая функция-член std::basic_filebuf<CharT,Traits>)

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

Spec-Zone.ru

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