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

read_until (5 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 boost::regex & expr);

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

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

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

Parameters

s

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

b

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

expr

Регулярное выражение.

Return Value

Количество байтов в зоне доступа Streambuf и включая подстроку, которая соответствует обычному выражению.

Exceptions

boost::system::system_error

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

Remarks

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

Example

Для считывания данных в streambuf до появления последовательности CR-LF:

boost::asio::streambuf b;
boost::asio::read_until(s, b, boost::regex("\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 (5 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 18:34:13/0.0064871311187744/0