Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

basic_streambuf

Boost , Boost.Asio , Reference

Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

PrevUpHomeNext

Автоматически изменяемый буферный класс на основе std::streambuf.

template<
    typename Allocator = std::allocator<char>>
class basic_streambuf :
  noncopyable
Types

Имя

Описание

const_buffers_type

The type used to represent the input sequence as a list of buffers.

mutable_buffers_type

The type used to represent the output sequence as a list of buffers.

Member Functions

Имя

Описание

basic_streambuf

Construct a basic_streambuf object.

commit

Move characters from the output sequence to the input sequence.

consume

Remove characters from the input sequence.

data

Get a list of buffers that represents the input sequence.

max_size

Get the maximum size of the basic_streambuf.

Подготовьтесь

Get a list of buffers that represents the output sequence, with the given size.

size

Get the size of the input sequence.

Protected Member Functions

Имя

Описание

переполнение

Override std::streambuf behaviour.

reserve

underflow

Override std::streambuf behaviour.

Класс<basic_streambuf>получен из<std::streambuf>, чтобы связать входные и выходные последовательности Streambuf с одним или несколькими массивами символов. Эти массивы символов являются внутренними для объекта<basic_streambuf>, но прямой доступ к элементам массива обеспечивается для их эффективного использования с операциями ввода-вывода. Персонажи, записанные на выходную последовательность объекта<basic_streambuf>, прилагаются к входной последовательности того же объекта.

Публичный интерфейс класса<basic_streambuf>предназначен для реализации следующих стратегий:

  • Единый смежный массив символов, который перераспределяется по мере необходимости для учета изменений в размере последовательности символов. Именно такой подход используется в настоящее время в Asio.
  • Последовательность из одного или нескольких наборов символов, где каждый массив имеет одинаковый размер. Дополнительные объекты массива символов добавляются к последовательности, чтобы вместить изменения в размере последовательности символов.
  • Последовательность одного или нескольких наборов символов различного размера. Дополнительные объекты массива символов добавляются к последовательности, чтобы вместить изменения в размере последовательности символов.

Конструктор для<basic_streambuf>принимает аргумент<size_t>, определяющий максимум суммы размеров входной последовательности и выходной последовательности. При жизни<basic_streambuf>объекта следующий инвариант содержит:

size() <= max_size()

Любая функция члена, которая в случае успеха привела бы к нарушению инварианта, должна предусматривать исключение из класса<std::length_error>.

Строитель<basic_streambuf>принимает аргумент Аллокатора. Копия этого аргумента используется для любого выделения памяти, выполняемого конструктором и всеми функциями-членами в течение срока службы каждого<basic_streambuf>объекта.

Examples

Письмо прямо из Streambuf в розетку:

boost::asio::streambuf b;
std::ostream os(&b);
os << "Hello, World!\n";
// try sending some data in input sequence
size_t n = sock.send(b.data());
b.consume(n); // sent data is removed from input sequence

Чтение из розетки прямо в стримбуф:

boost::asio::streambuf b;
// reserve 512 bytes in output sequence
boost::asio::streambuf::mutable_buffers_type bufs = b.prepare(512);
size_t n = sock.receive(bufs);
// received data is "committed" from output sequence to input sequence
b.commit(n);
std::istream is(&b);
std::string s;
is >> s;
Requirements

Заголовок:<boost/asio/basic_streambuf.hpp>

Удобный заголовок:<boost/asio.hpp>


PrevUpHomeNext

Статья basic_streambuf раздела Boost.Asio Reference может быть полезна для разработчиков на c++ и boost.




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: Reference ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-05-20 08:51:04/0.0063841342926025/0