将数据读取到动态缓冲区序列中,直到它包含指定的定界符。
template< typename SyncReadStream, typename DynamicBuffer_v1> std::size_t read_until( SyncReadStream & s, DynamicBuffer_v1 && buffers, string_view delim, boost::system::error_code & ec, constraint_t< is_dynamic_buffer_v1< decay_t< DynamicBuffer_v1 > >::value > = 0, constraint_t< !is_dynamic_buffer_v2< decay_t< DynamicBuffer_v1 > >::value > = 0);
此函数用于将数据读取到指定的动态缓冲区序列中,直到动态缓冲区序列的 get 区域包含指定的定界符。调用将阻塞,直到以下条件之一成立:
此操作通过对流的 read_some 函数进行零次或多次调用来实现。如果动态缓冲区序列的 get 区域已包含定界符,则函数会立即返回。
要从中读取数据的流。类型必须支持 SyncReadStream 概念。
将要读取数据的动态缓冲区序列。
分隔符字符串。
用于指示发生何种错误(如果有)。
动态缓冲区序列的 get 区域中,直到并包含分隔符的字节数。如果发生错误,则返回 0。
在成功的 read_until 操作后,动态缓冲区序列可能包含定界符之后的多余数据。应用程序通常会将这些数据保留在动态缓冲区序列中,以供后续的 read_until 操作进行检查。