将数据读入动态缓冲区序列,直到其包含的某些部分与正则表达式匹配。
template< typename SyncReadStream, typename DynamicBuffer_v2, typename Traits> std::size_t read_until( SyncReadStream & s, DynamicBuffer_v2 buffers, const boost::basic_regex< char, Traits > & expr, boost::system::error_code & ec, constraint_t< is_dynamic_buffer_v2< DynamicBuffer_v2 >::value > = 0);
此函数用于将数据读取到指定的动态缓冲区序列中,直到动态缓冲区序列的 get 区域包含与正则表达式匹配的某些数据。调用将阻塞,直到满足以下任一条件:
此操作通过零次或多次调用流的 read_some 函数来实现。如果动态缓冲区序列的 get 区域已包含与正则表达式匹配的数据,则函数将立即返回。
要从中读取数据的流。类型必须支持 SyncReadStream 概念。
将读取数据的动态缓冲区序列。
正则表达式。
用于指示发生何种错误(如果有)。
动态缓冲区序列中,从开始到包含正则表达式匹配的子字符串为止的字节数。如果发生错误,则返回 0。
在成功的 read_until 操作后,动态缓冲区序列可能包含超出正则表达式匹配部分的数据。应用程序通常会将这些数据保留在动态缓冲区序列中,供后续的 read_until 操作进行检查。