Boost C++ 库

……是世界上备受赞誉、设计精良的 C++ 库项目之一。 Herb SutterAndrei Alexandrescu, 《C++ 编码标准》

read (16 个重载中的第 12 个) - Boost C++ 函数库
PrevUpHomeNext

尝试从流中读取指定数量的数据,然后返回。

template<
    typename SyncReadStream,
    typename Allocator,
    typename CompletionCondition>
std::size_t read(
    SyncReadStream & s,
    basic_streambuf< Allocator > & b,
    CompletionCondition completion_condition,
    boost::system::error_code & ec,
    constraint_t< is_completion_condition< CompletionCondition >::value >  = 0);

此函数用于从流中读取指定数量的字节数据。调用将阻塞,直到满足以下任一条件:

  • 提供的缓冲区已满(即已达到最大大小)。
  • completion_condition 函数对象返回 0。

此操作通过零次或多次调用流的 read_some 函数来实现。

参数

s

要从中读取数据的流。类型必须支持 SyncReadStream 概念。

b

用于读取数据的 basic_streambuf 对象。

completion_condition

用于确定读取操作是否完成的函数对象。函数对象的签名必须是:

std::size_t completion_condition(
  // Result of latest read_some operation.
  const boost::system::error_code& error,

  // Number of bytes transferred so far.
  std::size_t bytes_transferred
);

返回值为 0 表示读取操作已完成。非零返回值表示下一次调用流的 read_some 函数时要读取的最大字节数。

ec

用于指示发生何种错误(如果有)。

返回值

读取的字节数。如果发生错误,则返回错误发生前成功传输的总字节数。


PrevUpHomeNext