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

read_until (3 of 8 overloads)

Boost , Boost.Asio , read_until

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

Прочитайте данные в streambuf до тех пор, пока они не будут содержать определенный разграничитель.

template<
    typename SyncReadStream,
    typename Allocator>
std::size_t read_until(
    SyncReadStream & s,
    boost::asio::basic_streambuf< Allocator > & b,
    const std::string & delim);

Эта функция используется для считывания данных в указанный streambuf до тех пор, пока область получения streambuf не содержит указанный делимитер. Звонок будет блокироваться до тех пор, пока не будет выполнено одно из следующих условий:

  • Зона получения Streambuf содержит указанный делимитер.
  • Произошла ошибка.

Эта операция реализована с точки зрения нуля или более вызовов функции read_some потока. Если область получения Streambuf уже содержит разграничитель, функция немедленно возвращается.

Parameters

s

Поток, из которого следует читать данные. Этот тип должен поддерживать концепцию SyncReadStream.

b

Объект streambuf, в который будут считываться данные.

delim

Струна разграничителя.

Return Value

Количество байтов в зоне доступа Streambuf до и включая разграничитель.

Exceptions

boost::system::system_error

Выброшен на провал.

Remarks

После успешной операции read_until, streambuf может содержать дополнительные данные за пределами разграничителя. Приложение обычно оставляет эти данные в streambuf для последующего чтения до тех пор, пока операция не будет изучена.

Example

Для чтения данных в streambuf до появления новой строки:

boost::asio::streambuf b;
boost::asio::read_until(s, b, "\r\n");
std::istream is(&b);
std::string line;
std::getline(is, line);

После успешного завершения операции<read_until>буфер<b>содержит разграничитель:

{ 'a', 'b', ..., 'c', '\r', '\n', 'd', 'e', ... }

Призыв к<std::getline>затем извлекает данные вплоть до делимитера, так что строка<line>содержит:

{ 'a', 'b', ..., 'c', '\r', '\n' }

Остальные данные оставляют в буфере<b>следующим образом:

{ 'd', 'e', ... }

Эти данные могут быть началом новой линии, которая будет извлечена последующей операцией<read_until>.


PrevUpHomeNext

Статья read_until (3 of 8 overloads) раздела Boost.Asio read_until может быть полезна для разработчиков на c++ и boost.




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



:: Главная :: read_until ::


реклама


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

Время компиляции файла: 2024-08-30 11:47:00
2025-05-19 19:09:13/0.0082728862762451/1