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